【问题标题】:PeriodFormatter For ZoneDateTimeZoneDdateTime 的周期格式
【发布时间】:2021-09-04 09:57:22
【问题描述】:

PeriodFormatter 在包 org.joda.time 中。它用于 LocalDateTime。但是需要一个 PeriodFormatter 用于 Zonedatetime。下面是代码

  Period period = new Period(localtime1, localtime2, PeriodType.standard());

    PeriodFormatter dhm = new PeriodFormatterBuilder()
            .printZeroNever()
            .appendYears()
            .appendSuffix(" " + pickUpYear + " ", " " + pickUpYears + " ")
            .appendSeparator(" " + pickUpTimeSeparator + " ")
            .printZeroNever()
            .appendMonths()
            .appendSuffix(" " + pickUpMonth + " ", " " + pickUpMonths + " ")
            .appendSeparator(" " + pickUpTimeSeparator + " ")
            .printZeroNever()
            .appendDays()
            .appendSuffix(" " + pickUpDay + " ", " " + pickUpDays + " ")
            .appendSeparator(" " + pickUpTimeSeparator + " ")
            .printZeroNever()
            .appendHours()
            .appendSuffix(" " + pickUpHour + " ", " " + pickUpHours + " ")
            .appendSeparator(" " + pickUpTimeSeparator + " ")
            .printZeroNever()
            .appendMinutes()
            .appendSuffix(" " + pickUpMinute + " ", " " + pickUpMinutes + " ")
            .toFormatter();

    return dhm.print(period.normalizedStandard());

localtime1 和 localtime2 是 LocalDateTime 对象。但我想使用 ZoneDateTime 来代替。 ZoneDateTime 的替代方法是什么?

【问题讨论】:

    标签: java jodatime zoneddatetime


    【解决方案1】:

    java.time 的 ZonedDateTime 的 Joda-Time 等价物简称为 DateTime。所以就用它吧。

        DateTimeZone zone = DateTimeZone.forID("Asia/Thimphu");
        DateTime dt1 = new DateTime(2021, 6, 19, 10, 0, zone);
        DateTime dt2 = new DateTime(2022, 6, 21, 14, 0, zone);
        
        Period period = new Period(dt1, dt2, PeriodType.standard());
    
        PeriodFormatter dhm = new PeriodFormatterBuilder()
                .printZeroNever()
                .appendYears()
                .appendSuffix(" y ", " ys ")
                .appendSeparator(" , ")
                .printZeroNever()
                .appendMonths()
                .appendSuffix(" m ", " ms ")
                .appendSeparator(" , ")
                .printZeroNever()
                .appendDays()
                .appendSuffix(" d ", " ds ")
                .appendSeparator(" ; ")
                .printZeroNever()
                .appendHours()
                .appendSuffix(" h ", " hs ")
                .appendSeparator(" : ")
                .printZeroNever()
                .appendMinutes()
                .appendSuffix(" m ", " ms ")
                .toFormatter();
        
        String result = period.toString(dhm);
        
        System.out.println(result);
    

    输出:

    1 y , 2 ds ; 4 小时

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 2020-12-15
      • 2019-05-07
      • 2017-05-31
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      相关资源
      最近更新 更多