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

时间:2017-11-10 03:43:31

标签: java

我正在尝试用我们的Application中的java.time替换org.joda.time。 由于我们使用的是org.joda.time软件包,因此我们将ISO8601格式化为org.joda.time.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?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

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

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

期间per4 = Period.ofYears(2); // P2Y