2017-09-14 3 views
-1

Comment puis-je calculer la différence en secondes entre deux dates?Obtenez différence de secondes entre deux dateTime

J'ai ceci:

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

le temps est dans ce cas: now 2017-09-14T09:49:25.316 midnight 2017-09-15T00:00

Comment je calcule int second = ...?

Et le résultat, dans ce cas, que je veux le retour est 51035

Comment je peux faire?

UPGRADE RESOUDRE

J'essaie ceci:

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

retour Maintenant, la différence beetween la date en secondes dans la variable entier.

Merci à tous les utilisateurs pour la réponse.

+0

Est-ce java désolé –

Répondre

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

solution propre. En fait, plus propre que la mienne. Veuillez noter que Java 8 est nécessaire pour utiliser la classe ChronoUnit –

+1

@MathiasGhys 'LocalDateTime' fait déjà partie de Java 8. –

+3

' between() 'renvoie un' long'. Si vous voulez assigner un 'int' (ce qui dans ce cas est raisonnable), je recommande une vérification des limites avant le casting. –

0

Convertissez-les en secondes depuis Epoch et comparez les différences.

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

je referais ce par epochTime:

ZoneId zoneId = ZoneId.systemDefault(); 

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

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

puis calculer la différence:

long result = (epochInSecondsMidnight - epochInSecondsNow)