Java Simple und compareTo
-
18-09-2019 - |
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?
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 ...