如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
答案 0 :(得分:2)
这看起来像是jodatime的限制。它有ISOPeriodFormat和PeriodFormatterBuilder来创建PeriodFormatters。但ISOPeriodFormat仅支持注释中每个链接的ISO8601格式的子集(不包括小数年)。 PeriodFormatBuilder虽然高度可配置,但显然只会将整数作为整数来处理:
http://joda-time.sourceforge.net/apidocs/org/joda/time/format/PeriodFormatterBuilder.html