为了账号安全,请及时绑定邮箱和手机立即绑定

Java7 的日期差异(以天为单位)

Java7 的日期差异(以天为单位)

HUH函数 2021-09-12 19:50:16
我的日期格式为: EEE, dd MMM yyyy HH:mm:ss Z例如,日期 1:2018 年 9 月 10 日星期一 08:32:58 GMT日期 2:2018 年 9 月 11 日星期二 03:56:10 GMT在上述情况下,我需要将日期差异设为1,但如果我使用日期时间或手动将日期转换为毫秒,我将获得的值为0joda。供参考:http : //www.mkyong.com/java/how-to-calculate-date-time-difference-in-java/任何线索都会有所帮助。例子 :Date date1 = new Date("Mon Sep 10 08:32:58 GMT 2018");Date date2 = new Date("Tue Sep 11 03:56:10 GMT 2018");DateTime start = new DateTime(date1 );DateTime end = new DateTime(date2);int days = Days.daysBetween(start, end).getDays();System.out.println("Date difference: " + days);输出:日期差异:0
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

正如之前的评论中提到的,Joda-Time计算整日并向下取整。因此,您需要在比较时跳过时间。这样的事情会起作用,使用Java.time比较日期:


Date date1 = new Date("Mon Sep 10 08:32:58 GMT 2018");

Date date2 = new Date("Tue Sep 11 03:56:10 GMT 2018");

LocalDate start = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

LocalDate end = date2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

long between = ChronoUnit.DAYS.between(start, end);


System.out.println("Date difference: " + between);


查看完整回答
反对 回复 2021-09-12
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

Joda-Time 只计算一整天,换句话说,将差异截断为整数。因此,如果您的值之间相差 19 小时多一点,则计为 0 天。如果要忽略日期的时间部分,LocalDate请先转换为:

    int days = Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays();

(感谢您在评论中自己提供具体代码。既然您说它有效,我认为它应该是一个答案。)


查看完整回答
反对 回复 2021-09-12
  • 2 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信