Parsing Jodatime宽限年表分析器重复计数

Parsing Jodatime宽限年表分析器重复计数,parsing,jodatime,Parsing,Jodatime,下面的Scala代码返回121000ms,而不是预期的61000ms。这也适用于其他字段(例如,一天中的小时数),似乎是由于两次重复计算超出范围的值造成的。《宽容年表》的文档和测试似乎没有对这种行为提供任何线索,因此我想知道是否有人知道或能够解释这种行为 import org.joda.time.chrono.{ISOChronology, LenientChronology} import org.joda.time.format.DateTimeFormatterBuilder val s

下面的Scala代码返回121000ms,而不是预期的61000ms。这也适用于其他字段(例如,一天中的小时数),似乎是由于两次重复计算超出范围的值造成的。《宽容年表》的文档和测试似乎没有对这种行为提供任何线索,因此我想知道是否有人知道或能够解释这种行为

import org.joda.time.chrono.{ISOChronology, LenientChronology}
import org.joda.time.format.DateTimeFormatterBuilder

val secondNumber = "61"

val lenientChronology = LenientChronology.getInstance(ISOChronology.getInstanceUTC)

val lenientParser = new DateTimeFormatterBuilder()
  .appendSecondOfMinute(1).toFormatter.withChronology(lenientChronology)

lenientParser.parseMillis(secondNumber)

我们也可以改用PeriodFormatterBuilder:

导入org.joda.time.format.PeriodFormatterBuilder

val小时分钟=
新PeriodFormatterBuilder().appendHours().appendLiteral(:“”)。appendMinutes().appendLiteral(:“”)。appendSeconds().toFormatter
val持续时间=小时分钟。解析周期(“40:50:23”)。到标准持续时间
持续时间.getMillis


它可以动态处理LenientChronology

我们也可以使用PeriodFormatterBuilder:

导入org.joda.time.format.PeriodFormatterBuilder

val小时分钟=
新PeriodFormatterBuilder().appendHours().appendLiteral(:“”)。appendMinutes().appendLiteral(:“”)。appendSeconds().toFormatter
val持续时间=小时分钟。解析周期(“40:50:23”)。到标准持续时间
持续时间.getMillis


它在运行中处理时间顺序

看起来像一个bug。我建议您在Joda issue tracker上提交一个问题,因为该项目仍处于维护模式(没有增强功能,但继续修复错误)。@MenoHochschild我提出的问题看起来像一个错误。我建议您在Joda issue tracker上提交一个问题,因为该项目仍处于维护模式(没有增强功能,但仍在继续修复错误)。@MenoHochschild我已提出