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

标签 java jodatime

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/

相关文章:

java - 如何检查间隔列表(Joda-Time)是否完全涵盖 Java 中的一个月

java - 在Java中将“mm/yy”转换为“yyyy-mm-dd”

java - joda 时区 id 与 java 时区 id 相同吗?

spring - Joda 时间和 hibernate 4

java - ChangeListener JButton 问题

java - 使用 Spring 4.x 进行自定义属性管理

java - 无法在 STS 中使用 Ctrl+单击

java - 在 JavaFX 动画中模拟真实的弹跳

java - 有没有办法简化这个三元语句?

java - JodaTime 间隔内的 DateTime?