gpt4 book ai didi

date - 如何在 Java 8 中使用 LocalDateTime 计算两个日期之间的时差?

转载 作者:行者123 更新时间:2023-12-04 04:54:40 26 4
gpt4 key购买 nike

给出了很多答案,但我无法找到与我的情况兼容的答案。我需要找到 8 小时的时间差异以及日期更改。就像如果时间大于 8 小时,则不要执行某些操作。

我们是否有任何方法可以在 LocalDateTime 中实现相同的目标?在 Java-8 中?

我尝试使用以下方法但无法实现相同的效果。

LocalDateTime fromDateTime = LocalDateTime.of(2017, 07, 07, 07, 00, 55);
LocalDateTime toDateTime = LocalDateTime.now();
LocalDateTime tempDateTime = LocalDateTime.from(fromDateTime);

long years = tempDateTime.until(toDateTime, ChronoUnit.YEARS);
tempDateTime = tempDateTime.plusYears(years);

long months = tempDateTime.until(toDateTime, ChronoUnit.MONTHS);
tempDateTime = tempDateTime.plusMonths(months);

long days = tempDateTime.until(toDateTime, ChronoUnit.DAYS);
tempDateTime = tempDateTime.plusDays(days);

long hours = tempDateTime.until(toDateTime, ChronoUnit.HOURS);
tempDateTime = tempDateTime.plusHours(hours);

long minutes = tempDateTime.until(toDateTime, ChronoUnit.MINUTES);
tempDateTime = tempDateTime.plusMinutes(minutes);

long seconds = tempDateTime.until(toDateTime, ChronoUnit.SECONDS);

System.out.println("" + java.time.Duration.between(tempDateTime, toDateTime).toHours());

System.out.println(years + " years "
+ months + " months "
+ days + " days "
+ hours + " hours "
+ minutes + " minutes "
+ seconds + " seconds.");

很难分别检查时间和日期。

最初我编码它,但它看起来不正确:
return openBrat!=null 
&& openBrat.until(LocalDateTime.now(), ChronoUnit.DAYS) == 0 &&
openBrat.until(LocalDateTime.now(), ChronoUnit.HOURS) >= 8
&& openBrat.until(LocalDateTime.now(), ChronoUnit.Minutes) >= 0;

任何人都可以请建议如何减去:
2017 07 06 23:30:00 - 2017 07 07 01:30:00 - Should return 2 hours.

最佳答案

以下打印 2 ,就像你期望的那样。

LocalDateTime ldt1 = LocalDateTime.of(2017, 07, 06, 23, 30, 00);
LocalDateTime ldt2 = LocalDateTime.of(2017, 07, 07, 1, 30, 00);
System.out.println(Duration.between(ldt1, ldt2).toHours());

您的代码没有任何问题。如果您没有得到您期望的结果,您可能需要检查您的期望是否正确。

要在差异小于 8 小时时执行某些操作,您可以执行以下操作:
LocalDateTime ldt1 = LocalDateTime.of(2017, 07, 06, 23, 30, 00);
LocalDateTime ldt2 = LocalDateTime.of(2017, 07, 07, 1, 30, 00);
Duration d1 = Duration.between(ldt1, ldt2);
Duration d2 = Duration.ofHours(8);

if (d1.compareTo(d2) > 0) {
System.out.println("do nothing");
} else {
System.out.println("do something");
}

关于date - 如何在 Java 8 中使用 LocalDateTime 计算两个日期之间的时差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44968281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com