Konvertiert eine Zeichenfolge in GregorianCalendar
Ich habe einen string aus einer E-Mail-header, wie Date: Mon, 27 Oct 2008 08:33:29 -0700
. Was ich brauche, ist eine Instanz von GregorianCalendar, für die selben moment. So einfach ist das -- wie mache ich es?
Und für die schnellsten sind-das ist nicht gehen, um richtig zu arbeiten:
SimpleDateFormat format = ... //whatever you want
Date date = format.parse(myString)
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date)
weil es normalisiert sich die Zeitzone auf UTC (oder Ihrer lokalen Maschine Zeit, je nach Java-version). Was ich brauche, ist Kalender.getTimeZone().getRawOffset() zurück -7 * milisInAnHour
.
Kommentar zu dem Problem
Moll beiseite: man sollte mit dem Kalender.getInstance() anstatt instanziieren GregorianCalendar direkt. Bleibt flexibel, so dass Sie nicht haben, um das alles zu ändern Sie Ihren code, wenn Sie Ihre app ausgeführt wird, in Indien (z.B.).
@Daniel: Nicht unbedingt. Es hängt davon ab, ob die app läuft in Indien ist die Anbindung mit den Indianern, ISO-Datum-Formate, andere un-lokalisierte Prozesse, oder was haben Sie.
Während ich damit einverstanden, dass Sie sollten den Kalender.getInstance (und Sie sollten das generalisierte Typ Kalender, nicht GregorianCalendar)... getInstance() gibt nur eine nicht-GregorianCalendar, wenn Sie Ihre Sprache/Land ist Thai/Thailand!
InformationsquelleAutor der Frage Marcin | 2008-10-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde empfehlen, sich in die Joda Time library, wenn das ist eine option. Normalerweise bin ich gegen die Verwendung von Drittanbieter-Bibliothek auf, wenn der core Plattform, bietet eine ähnliche Funktionalität, aber ich habe dieses eine Ausnahme, weil der Autor von Joda Time ist auch hinter JSR310, und Joda Time ist im Grunde werden gerollt in Java 7 schließlich.
http://joda-time.sourceforge.net/
Jedenfalls, wenn Joda Time ist eine option, so etwas wie dieses sollte Arbeit:
Ich hoffe, das hilft.
InformationsquelleAutor der Antwort Jack Leow
Technisch gut dies funktioniert, weil, während es gibt ein Objekt zurück mit der Zeitzone, die gleich der aktuellen system-Zeitzone, der Uhrzeit werden geändert, um eine Rechnung für den offset.
Diesem code:
Ausgänge:
was technisch korrekt ist, da mein system Zeitzone MESZ /UTC minus vier Stunden (drei Stunden früher als bei Euch). Wenn Sie express-Zeit, als die Anzahl der Millisekunden seit dem 1. Januar 1970, 00:00:00 GMT (das ist, wie die
Date
Objekt speichert es Datum/Zeit), dann werden diese Zeiten gleich sind, es ist nur die Zeitzone ist anders.Ihre Frage ist wirklich Wie konvertiere ich ein Datum/Kalender in meiner Zeitzone? Für dass, nehmen Sie einen Blick auf meine Antwort auf die Vorherige Frage Wie behandeln Kalender-Zeitzonen mit Java?
InformationsquelleAutor der Antwort matt b