猿问

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

我的日期格式为: 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


HUH函数
浏览 176回答 2
2回答

红颜莎娜

正如之前的评论中提到的,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);

有只小跳蛙

Joda-Time 只计算一整天,换句话说,将差异截断为整数。因此,如果您的值之间相差 19 小时多一点,则计为 0 天。如果要忽略日期的时间部分,LocalDate请先转换为:    int days = Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays();(感谢您在评论中自己提供具体代码。既然您说它有效,我认为它应该是一个答案。)
随时随地看视频慕课网APP

相关分类

Java
我要回答