1

我有以下使用 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")

4

2 回答 2

3

根据DateTimeFormat javadoc,无法解析时区名称('z')。

编辑: 要解析时区,我会考虑使用'Z'和实际的时区偏移量(例如东部的-0500)。还有withOffsetParsed()你可能想要研究的 DateTimeFormatter 中的方法——例如。dateTimeFormatter.withOffsetParsed().parseDateTime("16 -0500");.

于 2012-06-07T20:53:30.640 回答
0

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

于 2012-07-11T04:48:29.413 回答