将 org.joda.time 转换为 java.time



我正在尝试在我们的应用程序中将org.joda.time替换为java.time。由于我们使用org.joda.time包,因此我们ISO8601 org.joda.time.Period格式化了period。

Period monthly = ISOPeriodFormat.standard().parsePeriod("P1M");
        Period yearly = ISOPeriodFormat.standard().parsePeriod("P1Y");
        Period weekly = ISOPeriodFormat.standard().parsePeriod("P1W");
        Period daily = ISOPeriodFormat.standard().parsePeriod("P1D");
        Period hour = ISOPeriodFormat.standard().parsePeriod("PT1H");
        Period minute = ISOPeriodFormat.standard().parsePeriod("PT1M");

由于像P1Y,P1M,P1W,P1D这样的格式存储在我们的系统中,因此在java.time中查找相同内容的格式化程序。

java.time.Duration 支持,小时,分钟和天。

Duration dailyD = Duration.parse("P1D");
    Duration hourD = Duration.parse("PT1H");
    Duration minuteD = Duration.parse("PT5M");

但是,不要在java.time中看到对Week(P1W(,Month(P1M(,Year(P1Y(的支持。有没有其他方法可以将其转换为java.time.period或java.time.Duration?

持续时间是基于时间的时间量。

期间是基于日期的时间量。

对于持续时间,您已正确尝试。请检查以下示例是否适用于您的情况

周期 per1 = 周期天数(-4(; P-4D

周期 per1a = 周期.ofDays(7(; P7D

周期 per2 = 周期.周数(5(; P5W

周期 per3 = 周期.ofMonths(-3(; P-3M

每4 个周期 = 周期.年数(2(; P2Y

最新更新