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

Converting org.joda.time to java.time

我正在尝试在我们的应用程序中用 java.time 替换 org.joda.time。 因为,我们使用的是 org.joda.time 包,所以我们使用 org.joda.time.Period.

的 ISO8601 格式句点
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 dailyD = Duration.parse("P1D");
    Duration hourD = Duration.parse("PT1H");
    Duration minuteD = Duration.parse("PT5M");

但是,在 java.time 中看不到对周 (P1W)、月 (P1M)、年 (P1Y) 的支持。有没有其他方法可以将其转换为 java.time.Period 或 java.time.Duration?

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

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

对于您已尝试的持续时间correct.Please检查以下示例是否适用于您的情况

period per1 = Period.ofDays(-4); // P-4D

期间 per1a = Period.ofDays(7); // P7D

per2 = Period.ofWeeks(5); // P5W

period per3 = Period.ofMonths(-3); // P-3M

period per4 = Period.ofYears(2); // P2Y