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.). Kommentarautor: Daniel Spiewak
@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. Kommentarautor: erickson
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! Kommentarautor: matt b

InformationsquelleAutor der Frage Marcin | 2008-10-27

Schreibe einen Kommentar