无法使用ZonedDateTime解析日期

时间:2017-03-27 04:16:12

标签: java java-8 zoneddatetime

有没有人知道如何使用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正确。

有谁知道如何使用Formatter。

2 个答案:

答案 0 :(得分:1)

datetimeformat应为yyyy-MM-dd'T'HH:mm:ss.SSSZ

  

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

https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

的详细信息

答案 1 :(得分:0)

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

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

这是工作代码:

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());

}