1

有谁知道如何使用 ZonedDateTime 解析这种格式的日期。2017-03-26T06:06:09.000+0000

 private static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.zzz+zzz";

    public void  converDate()
    {
        String dateInString = "2017-03-26T06:06:09.000+0000";
        ZonedDateTime ldt = ZonedDateTime.parse(dateInString, DateTimeFormatter.ofPattern(DATE_FORMAT));
        System.out.println(ldt.toString());
    }

我有这段代码,但这给出了一个例外。无法解析。我没有正确的 DateFormatter。

有谁知道如何使用格式化程序。

4

2 回答 2

1

日期时间格式应该是yyyy-MM-dd'T'HH:mm:ss.SSSZ

S 秒分数 978
Z zone-offset offset-Z +0000; -0800; -08:00;

详情请见 https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

于 2017-03-27T04:29:36.540 回答
0

在您的模式中,而不是使用“S”来解析您使用“z”的秒数。'z' 用于时区名称。请参阅 javadoc DateTimeFormatter

正确的模式是 ""yyyy-MM-dd'T'HH:mm:ss.SSS+SSSS" 并且在创建 DateTimeFormatter 时需要传递 zoneId。

这是工作代码:

private static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS+SSSS";
public void converDate(){
    String dateInString = "2017-03-26T06:06:09.000+0000";
    ZonedDateTime ldt = ZonedDateTime.parse(dateInString, DateTimeFormatter.ofPattern(DATE_FORMAT).withZone(ZoneId.of("Europe/Berlin")));

    System.out.println(ldt.toString());

}
于 2017-03-27T04:54:47.220 回答