如 ISO8601 wikipedia article 中所述:
The smallest value used may also have a decimal fraction, as in "P0.5Y" to indicate half a year. This decimal fraction may be specified with either a comma or a full stop, as in "P0,5Y" or "P0.5Y".
但是我无法用 joda-time 解析这样的时间段,以下代码:
Period.parse("P0.5Y", ISOPeriodFormat.standard());
失败:
java.lang.IllegalArgumentException: Invalid format: "P0.5Y" is malformed at "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
关于java - Joda-Time ISO8601 标准 ISOPeriodFormat 无法解析小数部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17966339/