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

问题描述 投票:0回答:1

是否有一个有效的joda DateTimeFormat日期字符串,如下所示:

周一,2018年7月23日07:08:26 + 0300 GMT

我试过了:

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

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

java jodatime
1个回答
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-23t 06:08:Cat .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会发生什么。

© www.soinside.com 2019 - 2024. All rights reserved.