Wie kann ich ein date mit eine eigene Zeitzone?
Können sagen, ich habe einen string für ein Datum, das wie folgt aussieht:
"Wed Jul 08 17:08:48 GMT 2009"
Also ich parse string in ein Datum-Objekt wie folgt:
DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZ yyyy");
Date fromDate = (Date)formatter.parse(fromDateString);
Gibt mir das richtige Datum-Objekt. Jetzt möchte ich um dieses Datum als ein CDT-Wert.
Ich habe viele Dinge versucht, und ich kann einfach nicht, es korrekt zu funktionieren. Es muss eine einfache Methode mit Hilfe der DateFormat-Klasse, um diese zu arbeiten. Irgendwelche Ratschläge? Mein letzter Versuch war dieser:
formatter.setTimeZone(toTimeZone);
String result = formatter.format(fromDate);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden "zzz" anstelle von "ZZZ": "Z" ist das symbol für eine RFC822-Zeitzone.
Gesagt, dass mein standard-Rat auf Datum/Zeit, die Sachen zu verwenden Joda Time, die eine insgesamt bessere API.
EDIT: Kurze, aber vollständige Programm:
Ausgabe: mi Jul 08 12:08:48 CDT 2009
Mit:
Ausgänge:
für das Datum in deinem Beispiel auf meinem Rechner. Das ist nach einsetzen zzz für ZZZ in das format string.
Sorry für das ausgraben eines alten thread. Aber ich Frage mich, ob es eine java-Klasse, die hält die ganze Zeit-zone-ids als Konstanten der Klasse.
Anstatt also zu hart-code der time-zone-id während der Einstellung Zeit-zone, wie diese:
würden wir stattdessen etwas tun mehr standard/uniform:
wo SomeConstantClass.java eine Klasse enthält die Konstanten, bezogen auf die verschiedenen Zeit-Zonen-ids, unterstützt durch die TimeZone-Klasse.
Die moderne Art, die mit der java.Zeit-Klassen.
ZonedDateTime
Geben Sie ein Formatierungs-Muster, das auf Ihre Eingabe-string. Die codes sind ähnlich
SimpleDateFormat
aber nicht genau. Lesen Sie sich unbedingt die Klasse doc fürDateTimeFormatter
. Beachten Sie, dass wir geben eineLocale
zu bestimmen, was der menschlichen Sprache zu verwenden, für den Namen der Tag-der-Woche und den Namen des Monats.Können wir einstellen, dass in eine andere Zeitzone.
Angeben die richtige Zeit zone name im format
continent/region
. Verwenden Sie niemals die 3-4 Buchstaben-Abkürzung wieCDT
oderEST
oderIST
wie Sie sind, nicht wahr, Zeitzonen, nicht standardisierten und nicht sogar einzigartig(!).Ich denke, dass durch
CDT
Sie bedeutete Zeit-zone, wieAmerica/Chicago
.Instant
In der Regel am besten, um die Arbeit in UTC. Für das extrahieren einer
Instant
. DieInstant
Klasse repräsentiert einen moment auf der Zeitachse, UTC mit einer Auflösung von Nanosekunden (bis zu neun (9) Ziffern eines dezimalbruchs).Diese
Instant
Klasse ist ein basic-building-block-Klasse von java.Zeit. Sie können denkenZonedDateTime
alsInstant
plus einZoneId
.Über java.Zeit
Den java.Zeit framework ist in Java 8 und höher. Diese Klassen verdrängen die lästige alte legacy Datum-Zeit-Klassen wie
java.util.Date
,.Calendar
, &java.text."=SimpleDateFormat
.Den Joda-Time Projekt, jetzt in Wartung-Modus, rät migration nach java.Zeit.
Um mehr zu erfahren, siehe die Oracle Tutorial. Und die Suche Stack Overflow für viele Beispiele und Erklärungen. Spezifikation JSR 310.
Wo erhalten Sie die java.Zeit-Klassen?
Den ThreeTen-Extra Projekt erweitert die java.mal mit zusätzlicher Klassen. Dieses Projekt ist ein Testgelände für mögliche künftige Erweiterungen zu java.Zeit. Sie finden möglicherweise einige nützliche Klassen, die hier wie
Interval
,YearWeek
,YearQuarter
, und mehr.