得到一个 DateTimeParseExcpetion
尝试转换字符串时 2020-04-01T08:53:47.000+02:00 00:00
```
String date = "2020-04-01T08:53:47.000+02:00 00:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSz");
parsedDate = LocalDateTime.parse(date,formatter).toString();
System.out.println(parsedDate);
3条答案
按热度按时间piah890a1#
你的图案和你的线不一样。检查最后一部分在哪里
000+02:00 00:00
.你的模式是:
SSSz
如果您尝试这样做:它会起作用,因为你的约会就像你的模式。请注意,日期中的每个数字也都是按模式排列的。
但是对于你的约会对象来说,有一个没有意义的空白,所以删除它,代码就完美地工作了。
输出:
请注意
z
是当地时间,表示“零时偏移”或“祖鲁时间”(utc),您可以使用Locale
.woobm2wo2#
这个
00:00
在你约会结束的时候,时间字符串对我来说没有意义。在剥离之后解析日期时间字符串。输出:
注意:您可以解析日期时间字符串(在条带化之后)
00:00
从结尾)到OffsetDateTime
以保留分区偏移信息。ca1c2owp3#
使用内置格式化程序
内置的
DateTimeFormatter.ISO_OFFSET_DATE_TIME
匹配字符串中我们能理解的部分。它可以只解析这一部分而忽略其余部分。输出:
因为您的字符串包含一个与utc的偏移量,
OffsetDateTime
是要解析到的正确类。如果我们用LocalDateTIme
,偏移量将被忽略,并且我们将不知道时间将在哪个偏移量被解释,也就是说,我们不知道它是哪个时间点。与OffsetDateTime
时间点是明确的。如果要转换为自己时区中的时间,请转换为ZonedDateTime
(仍然没有LocalDateTime
).输出示例:
链接
文档链接:
DateTimeFormatter.ISO_OFFSET_DATE_TIME
.两个arg
DateTimeFormatter.parse(CharSequence, ParsePosition)
我用过的。