Java 两个DateTime对象之间的差异(以分钟为单位)

Java 两个DateTime对象之间的差异(以分钟为单位),java,datetime,localdate,Java,Datetime,Localdate,我使用的是LocalDateTime,但它没有得到2DateTime的差值,而是只计算了时间。这不算一天 代码如下: =========================================================== Date_Time_from | Date_Time_to =========================================================== 2018-06-16 02:00:00 |2018-06

我使用的是LocalDateTime,但它没有得到2
DateTime
的差值,而是只计算了时间。这不算一天

代码如下:

===========================================================
Date_Time_from          | Date_Time_to
===========================================================
2018-06-16 02:00:00     |2018-06-18 02:00:00
2018-06-16 03:00:00     |2018-06-18 03:00:00
2018-06-16 04:00:00     |2018-06-18 04:00:00
2018-06-16 05:00:00     |2018-06-18 05:00:00
2018-06-16 06:00:00     |2018-06-18 06:00:00
==========================================================
上述代码的输出为零,因为在2小时的日期时间内,等于120分钟减去2小时的日期时间

是否有其他方法获取总分钟数并计算日期

LocalDateTime fromdate = LocalDateTime.of(orderYear,orderMonth,orderDay,orderHour,orderMinute,orderSeconds);
LocalDateTime todate = LocalDateTime.of(deliverYear, deliverMonth, deliverDay,deliverHour,deliverMinute,deliverSeconds);
int a = fromdate.get(ChronoField.MINUTE_OF_DAY)-todate.get(ChronoField.MINUTE_OF_DAY);

然后你可以使用类似于

LocalDateTime fromdate = LocalDateTime.of(orderYear,orderMonth,orderDay,orderHour,orderMinute,orderSeconds);
LocalDateTime todate = LocalDateTime.of(deliverYear, deliverMonth, deliverDay,deliverHour,deliverMinute,deliverSeconds);
Duration difference = Duration.between(fromdate, todate);

为了证明这一点

long hours = difference.toHours();
long mins = difference.minusHours(hours).toMinutes();

// Or if you're lucky enough to be using Java 9+
//String formatted = String.format("%dhrs %02dmins", duration.toHours(), duration.toMinutesPart());
String formatted = String.format("%dhrs %02dmins", hours, mins);


当然,您可以根据自己的需要制定自己的格式算法

这就是您的要求吗

2018-06-16 02:00:00 - 2018-06-18 02:00:00 = 2d 0h 00m
2018-06-16 03:00:00 - 2018-06-18 03:00:00 = 2d 0h 00m
2018-06-16 04:00:00 - 2018-06-18 04:00:00 = 2d 0h 00m
2018-06-16 05:00:00 - 2018-06-18 05:00:00 = 2d 0h 00m
2018-06-16 06:00:00 - 2018-06-18 06:00:00 = 2d 0h 00m
更新

根据下面的注释,前导零被删除,因为它们容易出错

我需要的输出是在分钟只。谢谢

现在已经有两个很好的答案了,这只是要补充一点,虽然
Duration
类是表示两个日期时间之间差异的最通用和最灵活的类,但有一个更简单的选项:

输出为

2880


你试过joda time吗?使用持续时间!!!!!可能重复的@emaillenin JodaTime处于“维护”模式,因为Java 8+中包含了新的日期/时间API。好的,因此,基于上述内容,您认为您可能需要更改什么(提示
Duration
toMinutes
,但在上述示例中“修改”
持续时间
)?这个答案似乎切中要害,因为要求提供会议记录。另外,虽然
00
用于指定0分0秒,但如果您尝试
08
8分钟或
09
9秒,就会遇到麻烦,因为Java将前缀为0的数字视为。所以最好避免这种情况(当然,除非你有理由打算使用八进制数)。@OleV.V。是的,因为上帝不允许我们让人们自己思考或者做一些事情来解决他们的问题
2018-06-16 02:00:00 - 2018-06-18 02:00:00 = 2d 0h 00m
2018-06-16 03:00:00 - 2018-06-18 03:00:00 = 2d 0h 00m
2018-06-16 04:00:00 - 2018-06-18 04:00:00 = 2d 0h 00m
2018-06-16 05:00:00 - 2018-06-18 05:00:00 = 2d 0h 00m
2018-06-16 06:00:00 - 2018-06-18 06:00:00 = 2d 0h 00m
LocalDateTime fromDate = LocalDateTime.of(2018, 6, 16, 2, 0, 0);
LocalDateTime toDate = LocalDateTime.of(2018, 6, 18, 2, 0, 0);
long minutes = Duration.between(fromDate, toDate).toMinutes();
    LocalDateTime fromdate = LocalDateTime.of(2018, Month.JUNE, 16, 2, 0, 0);
    LocalDateTime todate = LocalDateTime.of(2018, Month.JUNE, 18, 2, 0, 0);
    long diffInMinutes = ChronoUnit.MINUTES.between(fromdate, todate);
    System.out.println(diffInMinutes);