如何使用 Jodatime 转换年、月、日中的天数?

How to convert Days in Year(s), Month(s), and Day(s) with Jodatime?

如何使用 Jodatime 转换年、月、日中的天数?

例如:

天 = 365; 应该打印 = 1 年、0 月和 0 天

Days days = Days.days(365);
    Period p1 = new Period(days);

    PeriodFormatter dhm = new PeriodFormatterBuilder()
        .appendDays().appendSuffix(" days", " Dias").appendSeparator(", ")
        .appendMonths().appendSuffix(" months", " Meses").appendSeparator(", e ")
        .appendYears().appendSuffix(" years", " Anos").toFormatter();

    System.out.println(dhm.print(p1.normalizedStandard()));

输出控制台:

1 day(s)

我也试过用

打印
period.getYears() + " Ano(s), "
+ period.getMonths() + " Mes(es), "
+ period.getDays() + " Dia(s)"

基本没有这个概念。毕竟,365 天不是 1 年,如果你从闰年开始。

可以做的是取一些"base"日期,加上你的天数周期,然后从year/month/day开始结果:

Period convertToYearMonthDay(Period period, LocalDate referenceDate) {
    LocalDate endDate = referenceDate.plus(period);
    return new Period(referenceDate, endDate, PeriodType.yearMonthDay());
}

您的 当前 输出的原因是 normalizedStandard 正在标准化为“52 周零 1 天”。