Java JodaTime中的时区格式不正确
我有以下使用Joda时间的片段: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
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”匹配数字时区偏移量。我已经更新了我的答案以包含更多信息。