PeriodFormatter在org.joda.time.And包中,它用于LocalDateTime.But想要用于Zonedatetime.Here的PeriodFormatter是下面的代码
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 object.But,我想用ZoneDateTime代替它。ZoneDateTime的替代方案是什么?
发布于 2021-06-20 20:52:39
相当于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 hs
https://stackoverflow.com/questions/68055889
复制相似问题