Ich versuche, eine Zeichenfolge wieConvert Datum String Mon 30. März 13.51.35 UTC 2015 Date-Objekt
String dateString = "Mon Mar 30 13:51:35 UTC 2015";
in einem Date-Objekt zu konvertieren.
Ich versuchte dies:
DateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZ yyyy", Locale.ENGLISH);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println("Date Object:"+sdf.parse(dateString));
Aber der Ausgang des Objekts Datum ist
Mon Mar 30 15:51:35 CEST 2015
wie Sie sehen können: 1) leitet er die Zeit der Zeichenfolge vor bis zwei Stunden 2) es ändert sich UTC -> CEST
Ich habe viele Lösungen versucht, aber nichts hat funktioniert. Was ist der richtige Weg, dies zu tun?
EDIT: Mein Ziel ist es, ein Date-Objekt aus diesem ursprünglichen String zu haben. Dieses Date-Objekt sollte dieselben Parameter wie die Datumszeichenfolge haben. In diesem Fall werden die ursprünglichen Stunden des Tages (13) auf 15 gestellt, aber das gewünschte ist, dass es bei 13 bleibt. Ich brauche das, weil ich in meinem Programm zwei verschiedene Datumsobjekte vergleichen muss.
BEARBEITEN: JAVA 8 LÖSUNG Auf der Suche nach den jüngeren Java 8 fand ich eine bessere und elegantere Lösung. Hier ist der Code
String pattern = "EEE MMM dd HH:mm:ss SSS zzz yyyy";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern, Locale.UK).withZone(ZoneId.of("UTC"));
final ZonedDateTime parsed = ZonedDateTime.parse(dateString, formatter);
Darüber hinaus ist es zu vergleichen, zum Beispiel die aktuelle Zeit:
ZonedDateTime now = ZonedDateTime.now();
int compared = parsed.compareTo(now);
System.out.println("NOW:"+now.toLocalDateTime()+" PARSED:"+parsed.toLocalDateTime()+" COMPARED:"+compared);
Wo befinden Sie sich? Das scheint mir das selbe Datum zu sein. –
Denken Sie daran, dass ein Datum kein Format hat. –
Ich glaube nicht, dass Sie verstehen, dass ein Datum ein Zeitstempel ist. Es ist eine Momentaufnahme, egal zu welcher Zeit es war. Es ist die gleiche Zeit, wo ich jetzt in Kalifornien bin, wo du in CEST bist (oder wo auch immer). Wenn ich hier ein "Date" -Objekt erstellt habe und eines dort erstellt habe, würden sie immer noch die gleiche Zeit repräsentieren und einander "gleich" sein. –