Joda:将字符串解析为DateTime并使用奇怪的时区格式

时间:2018-09-13 15:31:26

标签: java jodatime

对于日期字符串,是否存在有效的joda readQuery,如下所示:

  

2018年7月23日星期一07:08:26 +0300 GMT

我尝试过:

DateTimeFormat

但是这些都不起作用。 我在这里https://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html进行了查看,无法找到一种解析日期的方法,而不必先更改字符串本身。 有办法吗?

1 个答案:

答案 0 :(得分:1)

我认为+0300是真实的偏移量,GMT只是说+0300是相对于GMT的。 Joda-Time支持使用撇号来分隔不应解释的常量文本:

    DateTimeFormatter formatter = DateTimeFormat.forPattern("E, d MMM yyyy HH:mm:ss Z 'GMT'");

    DateTime dt = DateTime.parse("Mon, 23 Jul 2018 07:08:26 +0300 GMT", formatter);
    System.out.println(dt);

我在欧洲/哥本哈根时区的计算机上的输出:

  

2018-07-23T06:08:26.000 + 02:00

顺便说一句,使用小写和大写z的想法也不错。如果将它们按相反的顺序放置,它会起作用:

    DateTimeFormatter formatter = DateTimeFormat.forPattern("E, d MMM yyyy HH:mm:ss Z z");
  

2018-07-23T04:08:26.000Z

我更喜欢撇号。读者很难知道Z z会带来什么。