我有以下使用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)
但它会抛出IllegalArgumentException:
Invalid format: "16 EDT" is malformed at "EDT"
我想念什么?
编辑:适用于DateTimeFormat.forPattern("HH")
答案 0 :(得分:3)
根据DateTimeFormat javadoc,无法解析时区名称('z')。
修改强>
为了解析时区,我将研究使用'Z'和实际时区偏移(例如东部的-0500)。您还可以查看DateTimeFormatter中的withOffsetParsed()
方法 - 例如。 dateTimeFormatter.withOffsetParsed().parseDateTime("16 -0500");
。
答案 1 :(得分:0)
问题是EDT不是有效的唯一时区名称。解析器在这方面非常严格。 EDT可以向美国或澳大利亚申请。