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

09-11 18:43