在Java中将“星期五,2016年12月2日12:29:00 +0100”解析为OffsetDateTime

时间:2016-12-20 17:03:58

标签: java date parsing

在尝试解析Java中的以下字符串时,我有点卡住了

Fri, 02 Dec 2016 12:29:00 +0100

我使用OffsetDateTime的方法如下:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E, dd MMM yyyy HH:mm:ss xx");
OffsetDateTime time = OffsetDateTime.parse(dateString, formatter);

其中“dateString”是字符串obove。 我错过了什么吗?

感谢您的回答。

1 个答案:

答案 0 :(得分:1)

使用预定义格式化程序

DateTimeFormatter类为该输入字符串提供常量实例。该字符串格式由RFC 1123定义。使用常量DateTimeFormatter.RFC_1123_DATE_TIME

String input = "Fri, 02 Dec 2016 12:29:00 +0100";
OffsetDateTime odt = OffsetDateTime.parse ( input , DateTimeFormatter.RFC_1123_DATE_TIME );
  

odt.toString():2016-12-02T12:29 + 01:00

请参阅live code in IdeOne.com

英语似乎内置于此格式化程序中。您的JVM当前默认值Locale无关紧要。在上述代码中添加Locale.setDefault ( Locale.CANADA_FRENCH );等行没有任何影响。因此,虽然上面的注释提供了总是指定Locale而不是隐式依赖当前默认值的好建议,但这个特殊的格式化程序是一个例外。