【问题标题】:Converting org.joda.time to java.time将 org.joda.time 转换为 java.time
【发布时间】:2017-11-10 03:43:31
【问题描述】:

我试图在我们的应用程序中用 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 支持 Hour、Minute 和 Day。

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?

【问题讨论】:

    标签: java java-time


    【解决方案1】:

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

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

    对于 Duration 您已尝试正确。请检查以下示例是否适用于您的情况

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 2017-11-19
      • 1970-01-01
      • 2011-12-13
      相关资源
      最近更新 更多