如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
最佳答案
看起来是jodatime的限制。它具有用于创建PeriodFormatters的ISOPeriodFormat和PeriodFormatterBuilder。但是,按照评论中的链接,ISOPeriodFormat仅支持ISO8601格式的子集(不包括小数年)。
PeriodFormatBuilder虽然是高度可配置的,但显然只能将年份作为整数来处理:
http://joda-time.sourceforge.net/apidocs/org/joda/time/format/PeriodFormatterBuilder.html