我想将Wed, 21 Oct 2016 07:28:00 GMT
和DateTimeFormatter
之类的GMT日期解析为Instant
。为了创建模式,我使用了官方文档:DateTimeFormatter
到目前为止我的代码:
String date = "Wed, 21 Oct 2016 07:28:00 GMT";
DateTimeFormatter gmtFormat = DateTimeFormatter.ofPattern("EEE' dd LLL yyyy HH:mm:ss '''");
TemporalAccessor parsed = gmtFormat.parse(date);
Instant a = Instant.from(parsed);
System.out.println(a);
但每次我都遇到这个错误:
Exception in thread "main" java.time.format.DateTimeParseException: Text 'Wed, 21 Oct 2016 07:28:00 GMT' could not be parsed at index 0
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1777)
索引0
为Wed
,我根据定义使用EEE
代表day-of-week
,还有代表Tue; Tuesday; T
的示例。
我也试过低,大写但不成功。怎么了?我忽视了什么吗?
答案 0 :(得分:5)
它适用于代码
String date = "Fri, 21 Oct 2016 07:28:00 GMT";
DateTimeFormatter gmtFormat = DateTimeFormatter.RFC_1123_DATE_TIME;
TemporalAccessor parsed = gmtFormat.parse(date);
Instant a = Instant.from(parsed);
System.out.println(a);
但是你必须改变这一天,否则它不适合给定的日期。
答案 1 :(得分:1)
EEE是Wed的正确格式。但它不包括逗号。
试试这个:
DateTimeFormatter gmtFormat = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss '''");
有用的link
答案 2 :(得分:0)
您要求提供冗余信息:星期几和日期。
更改格式只是忽略前三个字符,让它读取日/月/年。