Java 将日期时区转换为UTC偏移量

Java 将日期时区转换为UTC偏移量,java,jodatime,Java,Jodatime,给定一个DateTimeZone,我可以得到时区的名称和ID,如下所示: DateTimeZone timeZone=新的DateTimeZone(“美国/芝加哥”); //印刷“美国/芝加哥” System.out.println(timeZone.getID()); //打印“CDT”(因为现在是夏令时) System.out.println(timeZone.getNameKey(DateTimeUtils.currentTimeMillis()); //打印“中央夏时制” System.

给定一个
DateTimeZone
,我可以得到时区的名称和ID,如下所示:

DateTimeZone timeZone=新的DateTimeZone(“美国/芝加哥”);
//印刷“美国/芝加哥”
System.out.println(timeZone.getID());
//打印“CDT”(因为现在是夏令时)
System.out.println(timeZone.getNameKey(DateTimeUtils.currentTimeMillis());
//打印“中央夏时制”
System.out.println(timeZone.getName(DateTimeUtils.currentTimeMillis());
所有这些都很好,但我真的希望将时区作为UTC偏移量。在这种情况下,UTC偏移量看起来像
-05:00


如何使用Joda Time执行此操作?

您可以使用
日期
简化格式
时区
来实现您想要的功能。
通过设置所需的
时区
制作一个
SimpleDataFormat
。然后用它来格式化一个
newdate()

纯Joda解决方案如下所示:

int offsetMillis =
    DateTimeZone.forID("America/Chicago").getOffset(DateTimeUtils.currentTimeMillis());
DateTimeZone zone = DateTimeZone.forOffsetMillis(offsetMillis);
String utcOffset = zone.toString();
System.out.println(utcOffset); // output: -05:00

我相信这回答了你的问题。偏移量取决于日期随时间的变化(如夏令时)。