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

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

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

谢谢,谢谢。

datetime parsing jodatime datetime-parsing
1个回答
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

还有:

Zone: 'Z'输出偏移量,不含冒号,...。

要提取偏移量。

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

+02:00

链接。 DateTimeFormat 文件

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