从 jodatime DateTime 中提取时区

ben*_*888 -2 java datetime jodatime

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

先谢谢了!

And*_*eas 5

不要使用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());
Run Code Online (Sandbox Code Playgroud)

输出(我在美国东部)

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());
Run Code Online (Sandbox Code Playgroud)

如您所见, usingnew转换为默认时区,而 usingparse保留给定的时区。

  • @beni0888 有多个时区有 -07:00 偏移。如果您希望按名称显示区域,则必须提供该名称。 (2认同)