在尝试解析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。 我错过了什么吗?
感谢您的回答。
答案 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
英语似乎内置于此格式化程序中。您的JVM当前默认值Locale
无关紧要。在上述代码中添加Locale.setDefault ( Locale.CANADA_FRENCH );
等行没有任何影响。因此,虽然上面的注释提供了总是指定Locale
而不是隐式依赖当前默认值的好建议,但这个特殊的格式化程序是一个例外。