Es gibt zahlreiche Antworten gegeben, aber ich finde nicht kompatibel mit meiner Situation. Ich muss den Unterschied von 8 Stunden in der Zeit sowie am Datumswechsel auch finden. Wenn die Zeit länger als 8 Stunden ist, führe nichts aus.Wie berechne ich den Zeitunterschied zwischen zwei Daten mit LocalDateTime in Java 8?
Haben wir irgendeine Methode, die dasselbe in LocalDateTime
in Java-8 erreichen?
Ich habe versucht, folgende zu verwenden, aber nicht das gleiche zu erreichen.
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.");
Es ist schwierig, Zeit und Datum separat zu überprüfen.
Zunächst codiert ich es wie aber es sieht nicht richtig:
return openBrat!=null
&& openBrat.until(LocalDateTime.now(), ChronoUnit.DAYS) == 0 &&
openBrat.until(LocalDateTime.now(), ChronoUnit.HOURS) >= 8
&& openBrat.until(LocalDateTime.now(), ChronoUnit.Minutes) >= 0;
Könnte jemand bitte vorschlagen, wie wie zu subtrahieren:
2017 07 06 23:30:00 - 2017 07 07 01:30:00 - Should return 2 hours.
Sie können auch 'ChronoUnit.HOURS.between (date1, date2)' –
Verwenden Sie bewusst, dass 'LocalDateTime' absichtlich kein Konzept der Zeitzone hat? Wenn Sie diese Klasse verwenden, ignorieren Sie alle Anomalien wie Sommerzeit (DST). Wenn Sie solche Realitäten berücksichtigen möchten, verwenden Sie 'ZonedDateTime'. –
Mögliches Duplikat von [Java 8: Berechnen Sie den Unterschied zwischen zwei LocalDateTime] (https://stackoverflow.com/questions/25747499/java-8-calculate-difference-between-two-localdatetime) – rogerdpack