我有这个日期:
"Wed Dec 31 00:00:00 GMT-8 1969"
但无法使用此SimpleDateFormat进行解析:
new SimpleDateFormat("EEE MMM dd hh:mm:ss zzz yyyy");
如何在格式字符串中指定-8
?我在阅读了SDF文档后尝试了Z
和X
,但无济于事。我该怎么用?
答案 0 :(得分:3)
-8
的使用采用非ISO标准格式。
预计会有-0800
或-08:00
之类的内容。这是因为时间偏移可能包括半小时。
您应该先对字符串运行预处理转换,然后再将其转换为SimpleDateFormat并将其更改为"Wed Dec 31 00:00:00 GMT-0800 1969"
并使用:
new SimpleDateFormat("EEE MMM dd hh:mm:ss Z yyyy");
如果您想简化一下,只需创建一个方法,将-8
替换为America/Los_Angeles
并使用ZZZ
。
答案 1 :(得分:2)
如果您使用的是java 8,则可以使用DateTimeFormatter
喜欢的模式尝试"EEE MMM d HH:mm:ss O yyyy"
:
String date = "Wed Dec 31 00:00:00 GMT-8 1969";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM d HH:mm:ss O yyyy");
LocalDateTime dateTime = LocalDateTime.parse(date, formatter);
O
表示本地化的区域偏移,可以格式化区域偏移,如GMT + 8,GMT + 08:00,UTC-08:00。您可以在DateTimeFormatter中看到Offset O
了解详情。