从 jodatime DateTime 中提取时区

Extract time zone from jodatime DateTime

我收到一个包含 ISO8601 日期时间的日期时间字符串,像这样 "2001-07-04T12:08:56.235-07:00",然后这个字符串被解析成一个 jodatime 日期时间对象 new DateTime("2001-07-04T12:08:56.235-07:00"),然后它被转换成一个字符串再次使用由参数传递的可变格式化程序模式,但是当发生这种情况时,不使用时区,因此使用系统的默认时区。我想要的是从第一个给定日期提取时区(或偏移量),并使用它相应地打印它。可能吗?

谢谢!

不要使用 new DateTime("...")。使用 DateTime.parse("...").

查看差异:

DateTime dateTime1 = new DateTime("2001-07-04T12:08:56.235-07:00");
System.out.println(dateTime1);
System.out.println(dateTime1.getZone());

DateTime dateTime2 = DateTime.parse("2001-07-04T12:08:56.235-07:00");
System.out.println(dateTime2);
System.out.println(dateTime2.getZone());

输出(我在美国东部)

2001-07-04T15:08:56.235-04:00
America/New_York
2001-07-04T12:08:56.235-07:00
-07:00

如您所见,使用 new 转换为默认时区,而使用 parse 保留给定时区。