2012-04-03 13 views

Antwort

3

Verwenden withZone(), um ein Joda-Time-Objekt in eine andere Zeitzone zu konvertieren.

+3

Danke, für diesen speziellen Fall habe ich DateTimeZone.forID ("America/New_York"); – BillMan

2

Joda kümmert sich um sich selbst. Es gibt einen kleinen Unterschied zwischen der Verwendung der Zeitzone und dem Gebietsschema eines Ortes.

Schauen Sie sich die folgenden Beispiele an.

Sprachumgebung mit:

Mit @ Billman Vorschlag Einstellung DateTimeZone auf ein Gebietsschema tatsächlich die Zeitzone ändern.

System.out.println("Winter " + DateTime.now(DateTimeZone.UTC).parse("2015-12-01T12:00:00").toDateTime(DateTimeZone.forID("America/New_York")).toString()); 
System.out.println("Summer " + DateTime.now(DateTimeZone.UTC).parse("2015-05-01T12:00:00").toDateTime(DateTimeZone.forID("America/New_York")).toString()); 

Retour:

Winter 2015-12-01T12:00:00.000-05:00 
Summer 2015-05-01T12:00:00.000-04:00 

Time-Zone verwenden:

Beachten Sie, dass beide Male auf 12.00.00 festgelegt sind, und das Ergebnis im Sommer konnte eine Stunde bewegt, (aber der Offset blieb gleich)

System.out.println("Winter " + DateTime.now(DateTimeZone.UTC).parse("2015-12-01T12:00:00").toDateTime(DateTimeZone.forID("EST")).toString()); 
System.out.println("Summer " + DateTime.now(DateTimeZone.UTC).parse("2015-05-01T12:00:00").toDateTime(DateTimeZone.forID("EST")).toString()); 

Zurückgegeben:

Winter 2015-12-01T12:00:00.000-05:00 
Summer 2015-05-01T11:00:00.000-05:00 
+0

EDT! = EST. An der Ostküste Amerikas wechselt die vorherrschende Zeit zwischen EDT und EST und umgekehrt. Das Ergebnis davon ist, dass Sie eine Stunde überspringen, wenn Sie vorwärts gehen, und zwei Uhr morgens haben, wenn Sie zurückgehen. – BillMan

+0

gibt es keine EDT-Zeitzone in Joda. EST berücksichtigt den Unterschied in der Sommerzeit. –

+0

EST ist eine Konstante -05: 00 hinter UTC. Wenn Sie Beweise dafür erbringen können, nehme ich das gerne an. Siehe http://www.timeanddate.com/time/zones/est – BillMan

Verwandte Themen