Java DateTimeFormatter:带有GMT日期

时间:2018-03-30 18:52:35

标签: java exception java-8

我想将Wed, 21 Oct 2016 07:28:00 GMTDateTimeFormatter之类的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)

索引0Wed,我根据定义使用EEE代表day-of-week,还有代表Tue; Tuesday; T的示例。

我也试过低,大写但不成功。怎么了?我忽视了什么吗?

3 个答案:

答案 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)

您要求提供冗余信息:星期几日期。

更改格式只是忽略前三个字符,让它读取日/月/年。