Joda-时间段计算

时间:2016-01-06 13:59:39

标签: java date wolfram-mathematica jodatime

我从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在这里做的是给它一个不同的结果?

1 个答案:

答案 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.