我从Joda-Time的计算期间得到奇怪的行为来获得某人的年龄。如果某人出生于1970年1月5日,那么截至今天他们应该是46岁和1天。但是,如果我使用以下年龄计算:
LocalDate birthdate = new LocalDate(1970,1,5);
LocalDate today = new LocalDate();
Period period = new Period(birthdate, today, PeriodType.yearMonthDay());
int age = period.getYears();
joda-time说时期是P45Y1D
。我在wolfram上试过这个,以确认我不是疯了,它同意我的看法。什么是joda-time在这里做的是给它一个不同的结果?
答案 0 :(得分:4)
我认为这是因为您的计算机时钟设置不正确。硬编码日期如下产生预期结果:
LocalDate birthdate = new LocalDate(1970,1,5);
LocalDate today = new LocalDate(2016, 1, 6); // Rather than relying on system clock.
Period period = new Period(birthdate, today, PeriodType.yearMonthDay());
int age = period.getYears(); // 46.