我收到一个包含ISO8601日期时间的日期时间字符串,如此"2001-07-04T12:08:56.235-07:00"
,然后以new DateTime("2001-07-04T12:08:56.235-07:00")
方式将此字符串解析为jodatime datetime对象,然后再使用它转换为字符串由参数传递的变量格式化程序模式,但是当发生这种情况时,不使用时区,因此正在使用系统的默认时区。我想要的是从第一个给定日期中提取时区(或偏移量),并使用它来相应地打印它。有可能吗?
事先谢谢!
答案 0 :(得分:4)
不要使用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
会保留指定的时区。