Frage

Ich habe eine Frage zu Simple Klasse bekam und die java.util.Date des compareTo-Methode:

Ich bin ein Date-Objekt konstruieren, dann I-Format, schließlich analysieren ich den formatierten String und dem ursprünglichen Datum zu vergleichen.

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));

Das Ergebnis:

  

Original: Mo 25. Januar 15.43.23 CET   2010 Formatiert Datum: 2010.jan.25   03.43.23 868 originalDate compareTo   parsedDate: 1

Warum erhalte ich immer „1“? Warum das ursprüngliche Datum Reibe als die analysierte Datum?

War es hilfreich?

Lösung

Ich denke, es ist ein 24-Stunden-bezogenes Problem, Ihr ursprüngliches Datum ist es 15, also 03.00, während analysierte man in 12 Stunden-Format, das, weil Sie verwendet h Formatspezifizierer anstelle von H Formatangabe. Sie Stunde eingeschaltet ist dann in die falsche Saite, so dass Sie Präzision zu verlieren, weil, wenn 03 analysiert zurück 03.00 betrachtet. Versuchen Sie, mit:

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

Andere Tipps

Es funktioniert, wenn Sie die AM / PM Markierung hinzufügen - a

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

Wenn Sie wollen nur die Daten vergleichen, vielleicht getTime () mit den beiden Werten zu vergleichen wäre eine bessere Idee ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top