【发布时间】:2015-06-01 02:19:51
【问题描述】:
我正在尝试在 JodaTime 中构建格式化程序以从以下字符串解析 Period:
- 年1小时90分
- 1年-60天800分钟
- 1年+1个月-1天+1小时-30分钟
我知道我可以在 jodatime 中使用 PeriodFormatterBuilder 构建解析器,但我无法解析前两个示例
PeriodFormatter formatter = new PeriodFormatterBuilder()
.appendYears().appendSuffix("year", "years").appendSeparatorIfFieldsAfter(" ")
.appendMonths().appendSuffix("month", "months").appendSeparatorIfFieldsAfter(" ")
.appendDays().appendSuffix("day", "days").appendSeparatorIfFieldsAfter(" ")
.appendHours().appendSuffix("hour", "hours").appendSeparatorIfFieldsAfter(" ")
.appendMinutes().appendSuffix("min", "mins").appendSeparatorIfFieldsAfter(" ")
.appendSeconds().appendSuffix("sec", "secs")
.toFormatter();
有什么方法可以告诉 joda tose 字段是可选的吗?
【问题讨论】:
-
为什么您的输入中有混合符号?我只是好奇。严格意义上来说,这不是一个单一的持续时间(周期),而是一系列持续时间。例如: 1month - 30days 是未来还是过去?很奇怪。 - 关于您的问题本身:Joda-Time 在解析周期中没有可选部分的概念(只有几秒钟,可选毫秒,而不是更多)。也许专门的
PeriodParser会有所帮助,但我建议先应用标记器(更简单)。 -
PeriodParser 实现是否帮助您解决了问题?
标签: java parsing datetime format jodatime