java实现判断当前时间,是否在指定时间范围

2023-05-16

目录

文章目录

  • java实现判断当前时间,是否在三月的最后一个星期日到十月的最后一个星期六
    • 1 问题提出
    • 2 问题解决

java实现判断当前时间,是否在三月的最后一个星期日到十月的最后一个星期六

1 问题提出

事情是这样的同事老哥给了我一张图,让我写个方法判断当天是冬春季航班计划,还是夏秋季航班计划。

link

2 问题解决

2.1 第一个就想到用Calendar方法,进行时间判断,首先获取到3月最后一个星期日和10月最后一个星期六 两个时间点,然后将当前时间与两个时间点进行比对。

 /**
     *  夏秋季航班计划:3月的最后一个星期日至10月的最后一个星期六。 return true
     *  冬春季航班计划:从10月的最后一个星期日到第二年3月的最后一个星期六 。 return false
     */
    public static boolean judgeFlightSeason(){
        //得到3月份 最后一个星期日的 00:00:00
        Calendar minTime = Calendar.getInstance();
        minTime.set(Calendar.MONTH,Calendar.MARCH);
        minTime.add(Calendar.MONTH, 1);//月份+1
        minTime.set(Calendar.DAY_OF_MONTH, 1);//天设为一个月的第一天
        minTime.add(Calendar.DAY_OF_MONTH, -1);//本月最后一天
        minTime.add(Calendar.DAY_OF_MONTH,1 - minTime.get(Calendar.DAY_OF_WEEK));//根据月末最后一天是星期几,向前偏移至最近的周日
        minTime.set(Calendar.HOUR_OF_DAY,0);
        minTime.set(Calendar.MINUTE,0);
        minTime.set(Calendar.SECOND,0);
        minTime.set(Calendar.MILLISECOND,0);
        //得到10月份最后一个星期六的 23:59:59
        Calendar maxTime = Calendar.getInstance();
        maxTime.set(Calendar.MONTH,Calendar.OCTOBER);
        maxTime.add(Calendar.MONTH, 1);//月份+1
        maxTime.set(Calendar.DAY_OF_MONTH, 1);//天设为一个月的第一天
        maxTime.add(Calendar.DAY_OF_MONTH, -1);//本月最后一天
        maxTime.add(Calendar.DAY_OF_MONTH,-maxTime.get(Calendar.DAY_OF_WEEK) % 7);//根据月末最后一天是星期几,向前偏移至最近的周六
        maxTime.set(Calendar.HOUR_OF_DAY,23);
        maxTime.set(Calendar.MINUTE,59);
        maxTime.set(Calendar.SECOND,59);
        maxTime.set(Calendar.MILLISECOND,999);

        //判断当前时间是否在夏秋航班计划时间范围
        Calendar nowTime = Calendar.getInstance();
        return  (nowTime.after(minTime)||nowTime.equals(minTime))&&(nowTime.before(maxTime)||nowTime.equals(maxTime));
    }

2.2 但是上面代码太过繁琐,Calendar需要设置时间具体到时分秒。可以使用JDK8新增加的时间处理类,思路一样。以下为修改后得代码:

public static boolean judgeFlightSeason(){
        LocalDate nowTime  = LocalDate.now();
        //获取3月份 最后一个星期日
        LocalDate marchDay = nowTime.withMonth(3);//设置月份为3月
        LocalDate lastDayOfMarch = marchDay.with(TemporalAdjusters.lastDayOfMonth());//本月最后一天
        //根据月末最后一天是星期几,向前偏移至最近的周日
        LocalDate minTime = lastDayOfMarch.plus( - lastDayOfMarch.get(ChronoField.DAY_OF_WEEK)%7,ChronoUnit.DAYS);

        //获取10月份 最后一个星期六
        LocalDate octoberDay = nowTime.withMonth(10);
        LocalDate lastDayOfOctober = octoberDay.with(TemporalAdjusters.lastDayOfMonth());
        LocalDate maxTime = lastDayOfOctober.plus( - (lastDayOfOctober.get(ChronoField.DAY_OF_WEEK)+1)%7, ChronoUnit.DAYS);

        //判断当前时间是否在夏秋航班计划时间范围
        return (nowTime.isAfter(minTime)||nowTime.equals(minTime))&&(nowTime.isBefore(maxTime)||nowTime.equals(maxTime));
    }

参考文章:
https://blog.csdn.net/dingnate/article/details/38091137

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java实现判断当前时间,是否在指定时间范围 的相关文章

  • Java反射机制,通过反射机制手写一个spring ioc框架

    Java基础 xff1a 反射机制 什么是反射Java反射机制的作用Java反射机制如何禁止Java反射机制的应用Java反射机制 常用 Api通过反射机制手写 spring ioc 示例 什么是SpringIOC什么是SpringIOC底
  • Java之设计模式(一): 单例模式

    单例模式 什么是单例模式 xff1f 单例模式应用场景饿汉式懒汉式静态内部类总结 设计模式 xff08 Design pattern xff09 是一套被反复使用 多数人知晓的 经过分类编目的 代码设计经验的总结 使用设计模式是为了可重用代
  • Java内存结构:基本概念

    基本概念 Java内存结构方法区 xff1a 堆 xff1a 栈 xff1a 内地方法栈 xff1a PC寄存器 xff1a 执行引擎 xff1a 垃圾回收机制 前言 面试经常被问到JAVA内存模型和Java内存结构的区别 JAVA内存模型
  • Java内存结构:jvm调优 堆调优

    堆 什么是堆堆结构图堆的参数配置设置最大堆内存设置新生代与老年代优化参数设置新生代比例参数内存溢出解决办法 什么是堆 是new创建出来的对象或数组存放在堆中 堆结构图 堆的参数配置 XX 43 PrintGC 每次触发GC的时候打印相关日志
  • springboot 2.3之后消失的hibernate-validator

    spirngboot升级到2 3之后 xff0c hibernate validator消失 项目升级到springboot2 3之后 xff0c 参数校验的注解报错 xff0c 发现spring boot starter web的依赖项已
  • CentOS7.6下MySQL8.0 tar.xz 安装详解

    安装详解 环境准备下载安装包安装步骤创建mysql用户更改目录权限初始化mysql设置环境变量添加开机自启动启动MYSQL服务登陆MYSQL修改密码修改公网访问设置防火墙 环境准备 1 由于Centos7自带Mariadb xff0c 卸载
  • Linux 防火墙 常用命令 基于Centos7

    常用操作 firewalld的基本使用服务之间的常用命令配置firewalld cmd firewalld的基本使用 启动 xff1a systemctl start firewalld 关闭 xff1a systemctl stop fi
  • MySQL主从复制和读写分离

    MySQL主从复制和读写分离 MySQL主从复制的好处主从复制的概念与作用主从复制的原理主从复制与读写分离的关系主从复制的配置修改主 master 服务器主服务器给从服务器账号授权修改从 slave 服务器连接主服务器开始同步操作 MySQ
  • java:组织机构树实现名称模糊查询

    在开发的很多场景中 xff0c 需要我们对树形结构进行模糊查询 xff0c 这个时候就需要用到递归来实现定位 xff0c 效果如下图 xff1a 话不多说 xff0c 直接上代码吧 xff1a 首先是对json的实例化对象处理 public
  • openstack dns_使用OpenStack Designate构建DNS即服务

    openstack dns Designate是一个多租户DNS即服务 xff0c 包括用于域和记录管理的REST API xff0c 用于与Neutron集成的框架以及对Bind9的集成支持 您可能需要考虑以下DNSaaS xff1a 干
  • mybatis plus 之UpdateWrapper操作

    目前java开发的系统为了可移植性更高 xff0c 都采用了mybatis plus来做持久层 xff0c 现在介绍一下其中UpdateWrapper的用法 xff1a UpdateWrapper lt TemplateDetailsEnt
  • 阿里域名+腾讯云服务器组合部署网站

    前段时间 xff0c 我在阿里云上购买了一个域名 本想着也在阿里云上购买一台入门级服务器先玩玩 xff0c 但是在看完一系列的产品后 xff0c 还是放弃了阿里云的服务器 对比几家之后还是选择了腾讯云 xff0c 接下来 xff0c 就是踩
  • 解决spring security登出时会由https重定向为http

    我们在集成spring security框架时 xff0c 默认的登出会走一次重定向login logout xff0c 这是如果发布到生产环境 xff0c 则会登出有问题 具体报错就是说由https和http混用访问资源的错误 xff0c
  • docker安装kafka,并集成springboot进行测试

    大家好 xff0c 今天我们开始学习kafka中间件 xff0c 今天我们改变一下策略 xff0c 不刷视频学习 xff0c 改为实践学习 xff0c 在网上找一些案例功能去做 xff0c 来达到学习实践的目的 首先 xff0c 是安装相关
  • springboot集成kafka的相关配置及自定义

    之前的文章末尾 xff0c 简单的实现了springboot集成kafka xff0c 完成了简单的测试 xff0c 今天我们来扩展一下相关内容 首先详解一下配置文件的内容 xff1a spring kafka 指定 kafka 地址 xf
  • sql查询一个表不包含另一个表的数据,两种方法。

    1 用minus函数的方式 xff1a select from CMN FUND where FUND CODE in select FUND CODE from CMN FUND minus select FUND CODE from C
  • js控制输入框禁止输入和允许输入

    初始 xff0c 部分输入框禁止输入 xff1a document ready function 34 fundCode 34 prop 34 disabled 34 true 34 convertFundCode 34 prop 34 d
  • jsp页面内嵌另一个jsp公共页面

    在开发过程中 xff0c 有些功能是一直可以重复使用的 xff0c 这样的页面我们可以做成公共的 xff0c 供每个页面适用 xff0c 那么就需要我们在使用的时候做一下嵌套 例如 xff1a 这样一个页面中 xff1a 上半部分是公共的
  • Go语言入门

    原文地址 xff1a 嗨客网 Go语言入门 Go语言入门教程 很多人将 Go 语言 称为 21 世纪的 C 语言 xff0c 因为 Go 不仅拥有 C 语言的简洁和性能 xff0c 而且还很好的提供了 21 世纪互联网环境下服务端开发的各种
  • Docker学习十:Docker Swarm

    一 Swarm介绍 Swarm 是 Docker 官方推出的容器集群管理工具 xff0c 最大的优势之一就是原生支持 Docker API xff0c 原来的 Docker 用户可以很方便地将服务迁移到 Swarm 中来 Swarm 还内置

随机推荐