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
我有简单的代码,将字符串解析为日期。
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