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



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

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'中移除时,它开始工作并返回: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

最新更新