我需要解析一个字符串到目前为止。问题在于该字符串具有随机数的拆分秒数。为了更加精确,位数在0到7之间变化。为了测试这一点,我编写了以下情形:

public static void main(String[] args) throws ParseException {
    // printDate("2016-02-10T12:48:08.632746Z");
    printDate("2016-02-10T12:48:08.632Z");

}

private static void printDate(String datumAsString) throws ParseException {
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
    System.out.println(LocalDateTime.parse(datumAsString, formatter));
}


带注释的行不起作用(它引发ParseException)。你有解决的办法吗?

最佳答案

假设秒后的数字代表秒的一部分而不是毫秒,那么两个字符串都可以通过ZonedDateTime“本地”解析-因此您可以编写:

private static void printDate(String datumAsString) throws ParseException {
  LocalDateTime ldt = ZonedDateTime.parse(datumAsString).toLocalDateTime();
  System.out.println(ldt);
}


您可能还想使用ZonedDateTime而不是忽略时区信息。

10-04 10:20