Question

J'ai une question sur la classe SimpleDateFormat et la méthode compareTo de java.util.Date:

Je suis la construction d'un objet Date, je forme, enfin je parse la chaîne formatée et de comparer à la date initiale.

DateFormat df = new SimpleDateFormat("yyyy.MMMdd hh:mm:ss SSS");
Date originalDate = new Date();

String s = df.format(originalDate);
Date parsedDate = df.parse(s);

System.out.println("Original date: " + originalDate);
System.out.println("Formatted date: " + s);
System.out.println("originalDate compareTo parsedDate: " + originalDate.compareTo(parsedDate));

Le résultat:

  

Date d'origine: Lun 25 15:43:23 CET Jan   2010 Date Formaté: 2010.jan.25   03:43:23 868 originalDate compareTo   parsedDate: 1

Pourquoi je reçois toujours « 1 »? Pourquoi la date d'origine râpe que la date analysable?

Était-ce utile?

La solution

Je pense qu'il est un problème lié à 24h, date d'origine, il est 15, donc 15 heures, alors que votre parsé une est au format 12 heures, parce que vous avez utilisé h spécificateur de format au lieu de H spécificateur de format. Vous heure est ensuite transformé en la mauvaise chaîne de sorte que vous perdez précision parce que quand analysable retour 03 est considéré comme trois heures. Essayez avec:

DateFormat df = new SimpleDateFormat("yyyy.MMMdd HH:mm:ss SSS");

Autres conseils

Il fonctionne si vous ajoutez le marqueur Am / h - a

DateFormat df = new SimpleDateFormat("yyyy.MMMdd hh:mm:ss SSS a");

Si vous souhaitez comparer simplement les dates, en utilisant peut-être getTime () pour comparer les deux valeurs serait une meilleure idée ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top