计算Java 8中两个日期之间的天数

 手机用户2602915451 发布于 2022-12-10 17:39

我知道有很多关于如何获得的问题,但我想要和使用新的Java 8 Date api的例子.我也知道JodaTime库,但我想要一种没有外部库的工作方式.

功能需要抱怨这些限制:

    防止日期保存时间错误

    输入是两个Date的对象(没有时间,我知道localdatetime,但我需要处理日期实例)

syntagma.. 383

如果您想要逻辑日历日,请使用以下DAYS.between()方法java.time.temporal.ChronoUnit:

LocalDate dateBefore;
LocalDate dateAfter;
long daysBetween = DAYS.between(dateBefore, dateAfter);

如果你想要24小时的文字,(持续时间),你可以使用Duration该类:

LocalDate today = LocalDate.now()
LocalDate yesterday = today.minusDays(1);
// Duration oneDay = Duration.between(today, yesterday); // throws an exception
Duration.between(today.atStartOfDay(), yesterday.atStartOfDay()).toDays() // another option

有关更多信息,请参阅此文档(以及其他文档:Oracle的Java 8).

7 个回答
  • 你可以使用until():

    LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4);
    LocalDate christmas = LocalDate.of(2014, Month.DECEMBER, 25);
    
    System.out.println("Until christmas: " + independenceDay.until(christmas));
    System.out.println("Until christmas (with crono): " + independenceDay.until(christmas, ChronoUnit.DAYS));
    

    2022-12-11 02:05 回答
  • 如果您想要逻辑日历日,请使用以下DAYS.between()方法java.time.temporal.ChronoUnit:

    LocalDate dateBefore;
    LocalDate dateAfter;
    long daysBetween = DAYS.between(dateBefore, dateAfter);
    

    如果你想要24小时的文字,(持续时间),你可以使用Duration该类:

    LocalDate today = LocalDate.now()
    LocalDate yesterday = today.minusDays(1);
    // Duration oneDay = Duration.between(today, yesterday); // throws an exception
    Duration.between(today.atStartOfDay(), yesterday.atStartOfDay()).toDays() // another option
    

    有关更多信息,请参阅此文档(以及其他文档:Oracle的Java 8).

    2022-12-11 02:07 回答
  • 根据VGR的评论,您可以使用以下内容:

    ChronoUnit.DAYS.between(firstDate, secondDate)
    

    2022-12-11 02:08 回答
  • 每个人都说要使用ChronoUnit.DAYS.between,但只是委托给你自己称之为另一种方法.所以你也可以这样做firstDate.until(secondDate, ChronoUnit.DAYS).

    两者的文档实际上都提到了这两种方法,并说使用哪一种更具可读性.

    2022-12-11 02:09 回答
  • 如果starDateendDatejava.util.Date的实例

    我们可以ChronoUnit 枚举中使用下面的between()方法

    public long between(Temporal temporal1Inclusive, Temporal temporal2Exclusive) {
        //..
    }
    

    ChronoUnit.DAYS计算完成24小时的

    import java.time.temporal.ChronoUnit;
    
    ChronoUnit.DAYS.between(startDate.toInstant(), endDate.toInstant());
    
    //OR 
    
    ChronoUnit.DAYS.between(Instant.ofEpochMilli(startDate.getTime()), Instant.ofEpochMilli(endDate.getTime()));
    

    2022-12-11 02:13 回答
  • 您可以使用DAYS.betweenjava.time.temporal.ChronoUnit

    例如

    import java.time.temporal.ChronoUnit;
    
    public long getDaysCountBetweenDates(LocalDate dateBefore, LocalDate dateAfter) {
        return DAYS.between(dateBefore, dateAfter);
    }
    

    2022-12-11 03:13 回答
  • 在枚举java.time.temporal.ChronoUnit中使用DAYS .以下是示例代码:

    输出: *开始日期:2015-03-01和结束日期之间的天数:2016-03-03是==> 368.**开始日期:2016-03-03和结束日期之间的天数: 2015-03-01是==> -368*

    package com.bitiknow.date;
    
    import java.time.LocalDate;
    import java.time.temporal.ChronoUnit;
    
    /**
     * 
     * @author pradeep
     *
     */
    public class LocalDateTimeTry {
        public static void main(String[] args) {
    
            // Date in String format.
            String dateString = "2015-03-01";
    
            // Converting date to Java8 Local date
            LocalDate startDate = LocalDate.parse(dateString);
            LocalDate endtDate = LocalDate.now();
            // Range = End date - Start date
            Long range = ChronoUnit.DAYS.between(startDate, endtDate);
            System.out.println("Number of days between the start date : " + dateString + " and end date : " + endtDate
                    + " is  ==> " + range);
    
            range = ChronoUnit.DAYS.between(endtDate, startDate);
            System.out.println("Number of days between the start date : " + endtDate + " and end date : " + dateString
                    + " is  ==> " + range);
    
        }
    
    }
    

    2022-12-11 03:13 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有