Joda-Time ISO8601标准ISOPeriodFormat无法解析小数部分

时间:2013-07-31 09:18:50

标签: java jodatime

ISO8601 wikipedia article中所述:

  

使用的最小值也可能有小数,如“P0.5Y”表示一半   一年。这个小数部分可以用逗号或句号指定,如“P0,5Y”或“P0.5Y”。

但我不能用joda-time解析这段时间,代码如下:

Period.parse("P0.5Y", ISOPeriodFormat.standard());

失败了:

  

java.lang.IllegalArgumentException:格式无效:“P0.5Y”格式错误为“0.5Y”

谁错了:维基百科,joda-time ISOPeriodFormat.standard()或我的错误?

与jodatime 2.2

1 个答案:

答案 0 :(得分:2)

这看起来像是jodatime的限制。它有ISOPeriodFormat和PeriodFormatterBuilder来创建PeriodFormatters。但ISOPeriodFormat仅支持注释中每个链接的ISO8601格式的子集(不包括小数年)。 PeriodFormatBuilder虽然高度可配置,但显然只会将整数作为整数来处理:

http://joda-time.sourceforge.net/apidocs/org/joda/time/format/PeriodFormatterBuilder.html