Java SimpleDateFormat 无法解析 "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSX" 格式模式中的日期

Java SimpleDateFormat can not parse date in "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSX" format pattern

我有简单的代码,将字符串解析为日期。

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSX").parse("2021-06-28T07:09:30.463931900Z")

它将此字符串解析为 Sat Jul 03 18:01:41 CEST 2021,这是无效的。

当我从模式 'SSSSSSSSSX' 中删除时,它开始工作并且 returns:Mon Jun 28 07:09:30 CEST 2021

问题是我需要纳秒,所以我不能就这样摆脱它。

我发现了很多类似的主题,但其中任何一个都涉及这种日期格式。

使用java.time:

您可以在没有任何显式模式的情况下解析此示例 String,保持所需的精度,并在必要时以多种自定义方式格式化这些日期和时间值。

这是一个小例子:

public static void main(String[] args) {
    // example String (of ISO format)
    String input = "2021-06-28T07:09:30.463931900Z";
    // parse it (using a standard format implicitly)
    OffsetDateTime odt = OffsetDateTime.parse(input);
    // print the result
    System.out.println(odt);
    
    // if you want a different output, define a formatter
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern(
            // use a desired pattern
            "EEE MMM dd HH:mm:ss O uuuu",
            // and a desired locale (important for names)
            Locale.ENGLISH);
    // print that
    System.out.println(odt.format(dtf));
}

此代码示例产生以下输出:

2021-06-28T07:09:30.463931900Z
Mon Jun 28 07:09:30 GMT 2021