La conversion de la chaîne en millisecondes
Je veux calculer la différence de temps entre deux dates (dans le format "aaaammjjhhmmss"). L'idée de base est d'abord convertir la chaîne de caractères date en millisecondes, puis obtenir la différence de temps.
Calendar c1 = Calendar.getInstance();
c1.setTime(new SimpleDateFormat("yyyyMMddHHmmss").parse("20110327032913"));
System.out.println(c1.getTimeInMillis());
Calendar c2 = Calendar.getInstance();
c2.setTime(new SimpleDateFormat("yyyyMMddHHmmss").parse("20110327025913"));
System.out.println(c2.getTimeInMillis());
Résultat:
1301189353000
1301191153000
Évidemment, la première date est postérieure à la seconde, mais sa converti à la milliseconde est plus petit. Je n'ai commis aucune erreur sur format?
Il fonctionne très bien pour moi, l'impression
Avec mon code à exécuter la première valeur est supérieur à la seconde.
Il n'y a pas de problème avec ton code, c'est l'impression de quelque chose de correct: ideone.com/EIS1wI
Ma conjecture est qu'un fuseau horaire changement a eu lieu dans votre système de paramètres régionaux par défaut, similaire à cette question.
Oui, les fuseaux horaires, les changements sont fréquents sur Mars 27, 2011, dans de nombreux pays, voir ce lien
1301221753000
et 1301219953000
. Quel fuseau horaire/locale exécutez-vous?Avec mon code à exécuter la première valeur est supérieur à la seconde.
Il n'y a pas de problème avec ton code, c'est l'impression de quelque chose de correct: ideone.com/EIS1wI
Ma conjecture est qu'un fuseau horaire changement a eu lieu dans votre système de paramètres régionaux par défaut, similaire à cette question.
Oui, les fuseaux horaires, les changements sont fréquents sur Mars 27, 2011, dans de nombreux pays, voir ce lien
OriginalL'auteur user2177467 | 2013-03-16
Vous devez vous connecter pour publier un commentaire.
La différence de temps entre les deux horodatages en ms est de 30 minutes:
En raison des modifications d'heure d'été le 27 mars, l'horloge est en train d'être mis en avant à 2 heures de 2 heures à 3 heures du matin, d'où les horodateurs:
sont en fait interprété comme:
Ainsi, le second horodatage vient plus tard et lors de la conversion de ms, il est plus grand que le premier.
Merci, c'est exactement la raison!
OriginalL'auteur harpun
Je parie que vous êtes dans un lieu où le temps a été modifié à partir de 2 heures (am) à 3 heures (am) pour l'heure d'été le 27 Mars 2011 (Voir ce lien)
Votre première fois, c'est
et votre deuxième temps est
donc en fait, votre deuxième temps est:
qui est, évidemment, 30 minutes plus tard que votre première (et pas 30 minutes plus tôt).
OriginalL'auteur jlordo
Peut-être que ce code peut vous aider à:
*Le problème est que si votre Chaîne n'est pas en UTC, vous ne pouvez jamais savoir si le changement d'heure a été appliquée par conséquent un intervalle pourrait être d'une heure.
Vous êtes les bienvenus!
OriginalL'auteur PbxMan