有很多答案,但我找不到符合我的情况的答案。 我需要找出时间上的8小时差异,同时还要在日期更改时找出差异。例如,如果时间大于8小时,则不执行某些操作。
我们是否有任何方法可以在Java-8中使用LocalDateTime
实现相同效果?
我尝试使用以下内容,但无法实现相同效果。
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.
ChronoUnit.HOURS.between(date1, date2)
。 - user7605325LocalDateTime
故意没有时区的概念吗?因此,使用该类意味着您将忽略任何异常情况,例如夏令时(DST)。如果您想考虑这些现实情况,请使用ZonedDateTime
。 - Basil Bourque