12
votes

Conversion de la chaîne en millisecondes

Je veux calculer la différence de temps entre deux dates (dans le format "yyyymmddhmmss"). L'idée de base est d'abord de convertir la date de chaîne en millisecondes, puis d'obtenir la différence de temps. xxx

résultat:

1301189353000 1301191153000

Évidemment, la première date est plus tard que la seconde, mais sa milliseconde convertie est plus petite. Ai-je effectué une erreur de format?


6 commentaires

Cela fonctionne bien pour moi, impression 1301221753000 et 1301219953000 . Dans quel fuseau horaire / locale utilisez-vous?


Avec mon code, la première valeur est supérieure à la seconde.


Il n'y a pas de problème avec votre code, il est d'imprimer quelque chose correct: ideone.com/eis1wi


Comme @vulcan a dit, le localiser pourrait être important dans certains cas, peut aimer le vôtre. Ceci est un exemple: Stackoverflow.com/questions/11510713/...


Je suppose que c'est qu'un changement de fuseau horaire a eu lieu dans les paramètres régionaux par défaut de votre système, similaires à cette question .


@Vulcan: Oui, les changements de fuseau horaire sont courants le 27 mars 2011 dans de nombreux pays, voir Lien


3 Réponses :


8
votes

La différence de temps entre les deux horodatages de la SEP est de 30 minutes:

2011-03-27 03:29:13

2011-03-27 03:59:13 (+1 hour from original time)


1 commentaires

Merci, c'est exactement la raison!



4
votes

Je parie que vous êtes dans un lieu local où le temps a été changé de 2 heures (AM) à 3 heures (AM) pour l'heure d'été du jour le 27 mars 2011 (voir Ce lien )

Votre première fois est p> xxx pré>

et votre deuxième fois est p> xxx pré>

en fait, votre deuxième fois est: p>

           ,,
2011 03 27 03 59 13
yyyy MM dd HH mm ss


0 commentaires

2
votes

Peut-être que ce code peut vous aider:

        Calendar c1 = Calendar.getInstance(TimeZone.getTimeZone("UTC"));            
        Calendar c2 = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));       

        c1.setTime(sdf.parse("20110327032913"));
        System.out.println(c1.getTimeInMillis());

        c2.setTime(sdf.parse("20110327025913"));     
        System.out.println(c2.getTimeInMillis());
                    System.out.println((c1.getTimeInMillis()-c2.getTimeInMillis())/(1000*60)+ " minutes");


0 commentaires