2017-09-14 2 views
-1

Wie kann ich die Differenz in Sekunden zwischen zwei Daten berechnen?Get Difference von Sekunden zwischen zwei dateTime

Ich habe diese:

LocalDateTime now = LocalDateTime.now(); // current date and time 
LocalDateTime midnight = now.toLocalDate().atStartOfDay().plusDays(1); //midnight 

In diesem Fall ist die Zeit: now 2017-09-14T09:49:25.316 midnight 2017-09-15T00:00

Wie ich int second = ...?

Und das Ergebnis, in diesem Fall zu berechnen, dass ich will Rückkehr 51035

Wie kann ich tun?

UPGRADE GELöST

Ich versuche dies:

DateTime now = DateTime.now(); 
DateTime midnight = now.withTimeAtStartOfDay().plusDays(1); 
Seconds seconds = Seconds.secondsBetween(now, midnight); 
int diff = seconds.getSeconds(); 

nun den Unterschied beetween das Datum in Sekunden in ganzzahligen Variablen zurück.

Vielen Dank an alle Benutzer für die Antwort.

+0

Ist das Java leider –

Antwort

4
int seconds = (int) ChronoUnit.SECONDS.between(now, midnight); 
+0

Saubere Lösung. Eigentlich sauberer als meins. Bitte beachten Sie, dass Java 8 benötigt wird, um die ChronoUnit-Klasse zu verwenden. –

+1

@MathiasGhys 'LocalDateTime' ist bereits Teil von Java 8. –

+3

' between() 'gibt ein' long' zurück. Wenn Sie einem int zuweisen möchten (was in diesem Fall vernünftig ist), empfehle ich vor dem Casting einen Schrankencheck. –

0

Konvertieren Sie sie in Sekunden seit Epoch und vergleichen Sie die Unterschiede.

LocalDateTime now = LocalDateTime.now(); 
LocalDateTime tomorrowMidnight = now.toLocalDate().atStartOfDay().plusDays(1); 

ZoneId zone = ZoneId.systemDefault(); 
long nowInSeconds = now.atZone(zone).toEpochSecond(); 
long tomorrowMidnightInSeconds = tomorrowMidnight.atZone(zone).toEpochSecond(); 
System.out.println(tomorrowMidnightInSeconds - nowInSeconds); 
0

Ich würde dies durch epochTime tun:

ZoneId zoneId = ZoneId.systemDefault(); 

LocalDateTime now = ...; 
long epochInSecondsNow = now.atZone(zoneId).toEpochSecond(); 

LocalDateTime midnight = ...; 
long epochInSecondsMidnight = midnight.atZone(zoneId).toEpochSecond(); 

und dann die Differenz berechnen:

long result = (epochInSecondsMidnight - epochInSecondsNow) 
Verwandte Themen