Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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
Java JodaTime中的时区格式不正确_Java_Datetime_Date_Jodatime - Fatal编程技术网

Java JodaTime中的时区格式不正确

Java JodaTime中的时区格式不正确,java,datetime,date,jodatime,Java,Datetime,Date,Jodatime,我有以下使用Joda时间的片段: import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("HH z") String dateTime = dateTimeFormatter.pr

我有以下使用Joda时间的片段:

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("HH z")
String dateTime = dateTimeFormatter.print(new DateTime())
println DateTime.parse(dateTime, dateTimeFormatter)
但它引发了非法辩论的例外:

Invalid format: "16 EDT" is malformed at "EDT"
我错过了什么

编辑:适用于日期时间格式。对于模式(“HH”)

根据,时区名称(“z”)无法解析

编辑:
要解析时区,我需要考虑使用“Z”和实际的时区偏移量(例如-0500表示东部)。在DateTimeFormatter中还有一个
withOffsetParsed()
方法,您可能需要研究它——例如
DateTimeFormatter.withOffsetParsed().parseDateTime(“16-0500”)

问题在于EDT不是有效的唯一时区名称。解析器在这方面非常严格。EDT可以应用于美国或澳大利亚。

那么如何解析这样的字符串呢?通过将其与已知时区列表进行匹配,“Z”匹配数字时区偏移量。我已经更新了我的答案以包含更多信息。