我的日期格式为: 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);
有只小跳蛙
TA贡献1824条经验 获得超8个赞
Joda-Time 只计算一整天,换句话说,将差异截断为整数。因此,如果您的值之间相差 19 小时多一点,则计为 0 天。如果要忽略日期的时间部分,LocalDate
请先转换为:
int days = Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays();
(感谢您在评论中自己提供具体代码。既然您说它有效,我认为它应该是一个答案。)
添加回答
举报
0/150
提交
取消