Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析;2016年12月2日星期五12:29:00+;0100“;在Java中抵消日期时间_Java_Date_Parsing - Fatal编程技术网

解析;2016年12月2日星期五12:29:00+;0100“;在Java中抵消日期时间

解析;2016年12月2日星期五12:29:00+;0100“;在Java中抵消日期时间,java,date,parsing,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”

在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。 我错过什么了吗

谢谢你的回答

使用预定义的格式化程序
DateTimeFormatter
类为该输入字符串提供了一个常量实例。该字符串格式由定义。使用常量

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


这个格式化程序似乎内置了英语。JVM当前默认的
语言环境
是不相关的。添加一行,例如
Locale.setDefault(Locale.CANADA\u FRENCH)对上述代码没有影响。因此,尽管上面的注释给出了很好的建议,即始终指定
区域设置
,而不是隐式地依赖当前默认设置,但这个特定的格式化程序是一个例外

对我有用,你在正确的
区域设置中吗
?有什么问题吗?如果您的意思是解析器抱怨输入字符串,那么这可能是Sotirios指出的问题:如果您使用的是不理解“Fri”和“Dec”的
Locale
,则会出现解析错误,因此请尝试
DateTimeFormatter.ofPattern(“E,dd-MMM-yyy-HH:mm:ss-xx”,Locale.ENGLISH)
以及上述基于文本的io操作(例如,读取/写入/解析/格式化字符串等)应始终使用显式的
区域设置
和编码,否则将使用系统默认值,这在另一台机器上(甚至在您的机器上)可能会有所不同-例如:我们曾经有一个系统,其系统区域设置为德语,一些csv导入依赖于此。操作系统更新将该区域设置更改为英语,因此我们的导入误解了csv文件中的数字,即1.0变为10等。非常感谢。你是对的。我使用了错误的
区域设置
我使用了预定义的格式化程序。这也行得通,我不依赖于
语言环境
String input = "Fri, 02 Dec 2016 12:29:00 +0100";
OffsetDateTime odt = OffsetDateTime.parse ( input , DateTimeFormatter.RFC_1123_DATE_TIME );