首页 > 编程语言 >java正确开发系列:使用hutool计算出时间段范围内的每一天

java正确开发系列:使用hutool计算出时间段范围内的每一天

时间:2023-05-19 10:34:52浏览次数:40  
标签:startDate java int hutool days parse start 时间段 endDate

背景:

前端入参分别有startDate和endDate,类型为字符串,格式为:2023-01-01、2023-05-01,需要后端计算出1月到5月的每一天

 

代码如下:

        String startDateStr = res.getStartDate();
        String endDateStr = res.getEndDate();
        DateTime startDate = DateUtil.parse(startDateStr);
        DateTime endDate = DateUtil.parse(endDateStr);
        LocalDateTime endDateNew = endDate.toLocalDateTime().plusDays(endDate.getLastDayOfMonth() - 1);

        LocalDateTime start = LocalDateTimeUtil.parse(startDate.toLocalDateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss")));
        LocalDateTime end = LocalDateTimeUtil.parse(endDate.toLocalDateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss")));
        Duration between = LocalDateTimeUtil.between(start, endDateNew);
        long days = between.toDays();
        log.info("相差天数 = " + days);

        // int startMonth = startDate.month() + 1;
        int endMonth = endDate.month() + 1;

        while (!start.isAfter(end)) {
            for (int i = 0; i < endMonth; i++) {
                // int monthDays = startDate.getLastDayOfMonth();
                int monthDays = DateUtil.parse(start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).getLastDayOfMonth();
                for (int j = 0; j < monthDays; j++) {
                    log.info("month = " + (i+1) + ", monthDays = " + monthDays + ", start = " + start + ", days = " + days);
                    start = start.plusDays(1);
                    days--;
                    if (days < 0) {
                        break;
                    }
                }
            }
        }

 

标签:startDate,java,int,hutool,days,parse,start,时间段,endDate
From: https://www.cnblogs.com/jamstack/p/17414188.html

相关文章

  • java-raft框架之atomix进行分布式管理
    共识算法在一个分布式的系统中,管理各个节点的一致性(共识)一直是个很有难度的问题。在近几十年的发展中,于1990年诞生的Paxos算法是其中最为经典的代表,并一统江湖数几十载。如著名的zookeeper、chubby都是基于Paxos算法的经典应用。不过Paxos算法的复杂度和难以理解性,也吸引了一些大佬......
  • java整型 浮点型简单使用案例
    publicclassImoocStudent{publicstaticvoidmain(String[]args){inti1=2,i2=4;inti3=i1/i2;System.out.println("整型2除以整型4的结果为:"+i3);floatf1=2f,f2=4f;floatf3=f1/f2;......
  • Java面试题总结
    spring事务的传播机制 spring事务失效原因1,数据库不支持事务:比如mysql数据库,MyISAM(马儿爱涩m)引擎不持支事务,需要使用InnoDB引擎才行2,该类不受spring管理,使用@Transactional会失效:因为spring事务是基于aop动态代理实现的,需要从ioc容器中获取bean才能为该对象生成代理类,从而......
  • 37基于java的职工管理系统设计与实现
    本章节给大家带来一个基于java的职工管理系统设计与实现,可适用于员工管理系统,企业员工管理系统,公司员工管理系统,企业人事管理系统,基于java职工管理系统,前后端分离,员工考勤管理系统,职工奖惩管理系统,职员合同管理,HR管理系统,人事HR管理系统等;引言由于计算机的快速发展,企业员工管......
  • 插入排序Java版
    插入排序工作原理:从头开始遍历数组,如果发现当前项比前一项小,说明当前项应该插到前面,交换一下即可。利用双层for循环,第一层是遍历整个数组,第二层负责遍历当前所遍历到的位置之前的数组。/***@Author:翰林猿*@Description:插入排序**/publicclassInsert{  pu......
  • JAVA学习之枚举类和注解
    之后的知识点都是一些小的细的碎的知识点的大杂烩,于是就选择每天都建一个新博客,去记录知识点了。枚举简单介绍:1.枚举对应英文(enumeration,简称enum)。2.枚举是一组常量的集合。3.可以理解为:枚举是一种特殊的类,里面只包含一组有限的特定的对象。首先尝试用已有知识解决需求:自......
  • Java编程的逻辑
    chapter3类的基础3.3代码的组织机制包范围可见性如果什么修饰符都不写,它的可见性范围就是同一个包内,同一个包内的其他类可以访问,而其他包内的类则不可以访问。声明为protected不仅表明子类可以访问,还表明同一个包内的其他类可以访问,即使这些类不是子类也可以。总结来说,可......
  • Java中==和equals的区别
    在Java中“==”和“equals()”都是用于比较两个对象是否相等,但是他们之间还是有着许多不同之处。两者的区别“==”是一个操作符,用于比较两个操作数的值是否相等。如果操作数为值类型,比较的是值是否相等,如果操作数为引用类型,比较的是地址值是否相等。“equals()”是一个定义在Ob......
  • 深入理解之JavaScript之call, apply, bind方法
    在JavaScript中,call、apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数执行时的上下文,再具体一点就是改变函数运行时的this指向。Function.prototype.call()call()方法调用一个函数,其具有一个指定的this值和多个参数(参数的列表)。fun.call(thisArg,a......
  • java面试题--Redis
    一、说一下redis的持久化机制原理?RDB文件:redisdatabase。存储的是某个时间点的数据库内容的快照,是结果。redis默认的持久化策略。落盘策略:使用SAVE或者BGSAVE命令。(1)SAVE:有主线程执行,会阻塞客户端。(2)BGSAVE:会fork出一个子进程,不会出现阻塞问题。子进程使用写时拷贝的策......