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

Java 将UTC转换为东部现行时间(EDT或EST),java,timezone,jodatime,Java,Timezone,Jodatime,有人能告诉我如何将JodaTime中的UTC日期转换为东部现行时间(取决于一年中的时间是EST还是EDT?用于将Joda时间对象转换为不同的时区。Joda自行处理。使用时区和地点之间有细微的区别 看看下面的例子 使用区域设置: 使用@BillMan的建议将DateTimeZone设置为区域设置实际上会改变时区 System.out.println("Winter " + DateTime.now(DateTimeZone.UTC).parse("2015-12-01T12:00:00").toD

有人能告诉我如何将JodaTime中的UTC日期转换为东部现行时间(取决于一年中的时间是EST还是EDT?

用于将Joda时间对象转换为不同的时区。

Joda自行处理。使用时区和地点之间有细微的区别

看看下面的例子

使用区域设置:

使用@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
 Winter 2015-12-01T12:00:00.000-05:00
 Summer 2015-05-01T11:00:00.000-05:00
使用时区:

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

返回:

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

谢谢,对于这个特殊的例子,我使用了DateTimeZone.forID(“美国/纽约”);最初的问题是,是否有一种方法可以使用JodaTime API定义一个日期对象,该对象将自动切换到东部标准时间和复活节夏令时,而不必再次修改代码。我相信博扬·佩特科维奇提供的答案更好地解决了这个问题美国东部时间。在美国东海岸,盛行时间在东部夏令时和东部夏令时之间变化,反之亦然。这样做的结果是,你向前移动时跳过一个小时,向后移动时有两个凌晨1:00。Joda没有EDT时区。EST考虑了夏令时的差异。EST是一个常数,比UTC晚5:00。如果你能提供证据,我很乐意接受。见@BillMan Good Point。它是固定的-05:00,但实际时间确实被正确切换,因此它考虑了夏令时。更新了答案以将其考虑在内。