【发布时间】:2020-02-26 13:05:44
【问题描述】:
我想将1d2h3m4s 之类的字符串解析为java.time.Duration。我可以使用joda 的PeriodFormatter 将字符串解析为org.joda.time.Duration,但我不知道如何将其转换为标准Java8 的java.time.Duration。
我必须连接一些已经期望 java.time.Duration 作为输入的“遗留”代码,但我想使用 joda 的 parsePeriod,因为 java.time.Duration.parse() 只接受 ISO-8601 持续时间格式(1d2h3m4s 不是 ISO -8601 持续时间合规)
import org.joda.time.format.PeriodFormatter;
import org.joda.time.format.PeriodFormatterBuilder;
...
final PeriodFormatter periodFormatter = new PeriodFormatterBuilder()
.printZeroNever()
.appendDays().appendSuffix("d")
.appendHours().appendSuffix("h")
.appendMinutes().appendSuffix("m")
.appendSeconds().appendSuffix("s").toFormatter();
org.joda.time.Duration myduration = periodFormatter.parsePeriod("1d1s").toStandardDuration();
java.util.time myduration2 = XXXXX
请记住,我并不想像在Converting org.joda.time.Period to java.time.Period 中那样从我的代码中删除org.joda.time.Period 的使用。我仍然想要一个org.joda.time.Period,因为我有更多的解析选项来生成它们,而且我需要一个java.time.Period/java.time.Duration,因为我与其他一些期望java.time.* 的API/库进行交互。
那么,有没有办法将org.joda.time.Duration 转换为java.time.Duration?
【问题讨论】:
-
不是真的,在那个问题中,OP 根本没有尝试将
org.joda.time.Period的一个实例转换为java.time.Period的一个实例。他在问如何用java.time.Period替换 joda 的Period,所以他根本没有任何joda 的实例。我想要一个 joda 的Period(因为我有更多的选项可以在那里解析)和一个java.time.Period(以及java.time.Duration)因为我有其他代码需要这种类型的输入。