将UTC转换为东部盛行时间(EDT或EST)

时间:2012-04-03 12:34:21

标签: java timezone jodatime

有人可以告诉我如何将JodaTime中的UTC日期转换为东部盛行时间(根据一年中的时间,是EST还是EDT?)

2 个答案:

答案 0 :(得分:4)

使用withZone()将Joda-Time对象转换为其他时区。

答案 1 :(得分:2)

Joda自己照顾它。使用TimeZone和场所的区域设置之间存在细微差别。

请看下面的例子。

使用区域设置:

使用@ BillMan建议将DateTimeZone设置为区域设置实际上会更改时区。

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());

返回:

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

使用TimeZone:

请注意,两个时间都设置为12:00:00,夏天的结果移动了一个小时(但偏移量保持不变)

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());

返回:

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