【问题标题】:Unable to parse date using ZonedDateTime无法使用 ZonedDateTime 解析日期
【发布时间】:2017-03-27 04:16:12
【问题描述】:

有谁知道如何使用 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。

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

【问题讨论】:

    标签: java java-8 zoneddatetime


    【解决方案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

    【讨论】:

      【解决方案2】:

      在您的模式中,而不是使用“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());
      
      }
      

      【讨论】:

        猜你喜欢
        • 2016-06-26
        • 1970-01-01
        • 2023-03-09
        • 2016-09-12
        • 2021-02-09
        • 2018-02-23
        • 2016-04-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多