Joda DateTimeFormatter用于格式为2020-05-16 01:00 + 0200的字符串

时间:2020-05-18 11:14:32

标签: datetime parsing jodatime datetime-parsing

我收到一个日期为"2020-05-16 01:00+0200"的字符串。我需要将其解析为DateTime对象,但找不到正确的模式,即DateTimeFormat.forPattern("yyyy-MM-dd HH:mm????");如何包括字符串中的“ +0200”? 另外,有没有办法从DateTime中提取偏移量?

谢谢。

1 个答案:

答案 0 :(得分:0)

    String dateStringToParse = "2020-05-16 01:00+0200";
    DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mmZ")
            .withOffsetParsed();

    DateTime dt = DateTime.parse(dateStringToParse, formatter);

    System.out.println(dt);

输出为:

2020-05-16T01:00:00.000 + 02:00

Joda-Time的标准行为是解析为默认时区。对withOffsetParsed()的调用可确保与字符串的偏移量保留在已解析的DateTime中。

DateTimeFormat的文档中介绍了模式字母Z

 Symbol  Meaning                      Presentation  Examples
 ------  -------                      ------------  -------
 Z       time zone offset/id          zone          -0800; -08:00; America/Los_Angeles

并且:

区域::“ Z”输出偏移量不带冒号,…

要提取偏移量:

    DateTimeZone z = dt.getZone();
    System.out.println(z);

+02:00

链接: DateTimeFormat documentation