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

Java 如何使用Jodatime转换年、月和日的天数?,java,jodatime,Java,Jodatime,如何使用Jodatime转换年、月和日的天数 例如: 天数=365天; 应打印=1年、0个月和0天 输出控制台: 1 day(s) 我还试着用印刷品印刷 period.getYears() + " Ano(s), " + period.getMonths() + " Mes(es), " + period.getDays() + " Dia(s)" 基本上没有这样的概念。毕竟,如果你从闰年开始,365天不是一年 您可以做的是选择一些“基准”日期,将基于天数的期间添加到该日期中,然后从结果中选

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

例如:

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

输出控制台:

1 day(s)
我还试着用印刷品印刷

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

基本上没有这样的概念。毕竟,如果你从闰年开始,365天不是一年

您可以做的是选择一些“基准”日期,将基于天数的期间添加到该日期中,然后从结果中选择基于年/月/日的期间:

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

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

闰年怎么样?谢谢@Jon Skeel,我尝试了许多实现。我的问题是JodaTime的概念API@diegohsi:不,我想说的是,问题比这更大——你可以在没有参考日期的情况下将“天数”标准化为“年、月、日”的想法并不具体。
Period convertToYearMonthDay(Period period, LocalDate referenceDate) {
    LocalDate endDate = referenceDate.plus(period);
    return new Period(referenceDate, endDate, PeriodType.yearMonthDay());
}