J'ai deux objets de DateTime , qui ont besoin de trouver la durée de leur différence ,
J'ai le code suivant mais je ne sais pas comment le continuer pour obtenir les résultats attendus comme suit:
Exemple
11/03/14 09:30:58
11/03/14 09:33:43
elapsed time is 02 minutes and 45 seconds
-----------------------------------------------------
11/03/14 09:30:58
11/03/15 09:30:58
elapsed time is a day
-----------------------------------------------------
11/03/14 09:30:58
11/03/16 09:30:58
elapsed time is two days
-----------------------------------------------------
11/03/14 09:30:58
11/03/16 09:35:58
elapsed time is two days and 05 mintues
Code
String dateStart = "11/03/14 09:29:58";
String dateStop = "11/03/14 09:33:43";
Custom date format
SimpleDateFormat format = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
Date d1 = null;
Date d2 = null;
try {
d1 = format.parse(dateStart);
d2 = format.parse(dateStop);
} catch (ParseException e) {
e.printStackTrace();
}
// Get msec from each, and subtract.
long diff = d2.getTime() - d1.getTime();
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = diff / (60 * 60 * 1000);
System.out.println("Time in seconds: " + diffSeconds + " seconds.");
System.out.println("Time in minutes: " + diffMinutes + " minutes.");
System.out.println("Time in hours: " + diffHours + " hours.");
java
date-arithmetic
J888
la source
la source
Réponses:
essayez ce qui suit
la source
La conversion de différence de date pourrait être mieux gérée en utilisant la classe intégrée Java, TimeUnit . Il fournit des méthodes utilitaires pour ce faire:
la source
Utiliser la bibliothèque Joda-Time
Joda Time a un concept d'intervalle de temps:
Un autre exemple de différence de date
Un lien de plus
ou avec Java-8 (qui intégrait les concepts Joda-Time)
la source
Voici comment le problème peut être résolu dans Java 8, tout comme la réponse de shamimz.
Source: http://docs.oracle.com/javase/tutorial/datetime/iso/period.html
Le code produit une sortie similaire à ce qui suit:
Nous devons utiliser LocalDateTime http://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html pour obtenir des différences d'heures, de minutes et de secondes.
la source
la source
Vous pouvez créer une méthode comme
Cette méthode retournera le nombre de jours entre les 2 jours.
la source
Comme l'écrit Michael Borgwardt dans sa réponse ici :
la source
En Java 8, vous pouvez faire de
DateTimeFormatter
,Duration
etLocalDateTime
. Voici un exemple:la source
Cela a fonctionné pour moi, je peux essayer avec cela, j'espère que cela sera utile. Faites-moi savoir si vous avez des inquiétudes.
la source
Voici le code:
et la sortie est:
la source
en référence à la mise à jour des réponses de shamim, voici une méthode qui effectue la tâche sans utiliser de bibliothèque tierce. Copiez simplement la méthode et utilisez
la source
J'ai récemment résolu le problème similaire en utilisant une méthode simple.
Et comme prévu , il imprime:
7 days ago
.la source
C'est un programme que j'ai écrit, qui obtient le nombre de jours entre 2 dates (pas d'heure ici).
http://pastebin.com/HRsjTtUf
la source
java.time.Duration
Je n'avais toujours pas le sentiment qu'aucune des réponses n'était tout à fait à jour et pertinente. Voici donc la réponse moderne utilisant
Duration
de java.time, l'API de date et d'heure Java moderne (les réponses de MayurB et mkobit mentionnent la même classe, mais aucune d'entre elles ne se convertit correctement en jours, heures, minutes et minutes comme demandé).La sortie de cet exemple d'extrait de code est:
Notez que cela
Duration
compte toujours un jour comme 24 heures. Si vous souhaitez traiter différemment les anomalies horaires comme les transistions d'heure d'été, les solutions inlcude (1) utilisentChronoUnit.DAYS
(2) UsePeriod
(3)Use
LocalDateTimeinstead of
ZonedDateTime` (peut être considéré comme un hack).Le code ci-dessus fonctionne avec Java 8 et avec ThreeTen Backport, ce backport de java.time vers Java 6 et 7. À partir de Java 9, il peut être possible de l'écrire un peu plus bien en utilisant les méthodes
toHoursPart
,toMinutesPart
ettoSecondsPart
y être ajouté.J'élaborerai davantage les explications un des jours où j'aurai le temps, peut-être pas avant la semaine prochaine.
la source
Comment calculer la différence entre deux dates en Java
la source