首页 > 解决方案 > 从包含 T 的字符串中解析日期

问题描述

我如何将日期解析2020-08-05T00:00:00.000-05:00MM/dd/yyyy h:mmaa

我试过了

String str = "2020-08-05T00:00:00.000-05:00";
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy h:mmaa");
    System.out.println(LocalDateTime.parse(str, formatter));

DateTimeFormatter inputFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH);
    DateTimeFormatter outputFormatter1 = DateTimeFormatter.ofPattern("MM/dd/yyyy h:mmaa", Locale.US);

    LocalDate date = LocalDate.parse("2020-08-05T00:00:00.000-05:00", inputFormatter1);
    String formattedDate = outputFormatter1.format(date);
    System.out.println(formattedDate);

但得到例外 -

Exception in thread "main" java.lang.IllegalArgumentException: Too many pattern letters: a
at java.time.format.DateTimeFormatterBuilder.parseField(DateTimeFormatterBuilder.java:1763)
at java.time.format.DateTimeFormatterBuilder.parsePattern(DateTimeFormatterBuilder.java:1602)
at java.time.format.DateTimeFormatterBuilder.appendPattern(DateTimeFormatterBuilder.java:1570)
at java.time.format.DateTimeFormatter.ofPattern(DateTimeFormatter.java:536)

更新 1:

我试过下面的代码 -

DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.ENGLISH);
    DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy h:mmaa", Locale.US);
    LocalDate date = LocalDate.parse("2020-08-05T00:00:00.000-05:00", inputFormatter);
    String formattedDate = outputFormatter.format(date);
    System.out.println(formattedDate);

但是现在在 outputFormatter 得到同样的错误时 -

Exception in thread "main" java.lang.IllegalArgumentException: Too many pattern letters: a

标签: javadatetimejava-8

解决方案


推荐阅读