【发布时间】:2016-01-06 13:59:39
【问题描述】:
我在 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 在这里做了什么导致了不同的结果?
【问题讨论】:
-
您系统上的时钟设置是多少?我刚刚在我的机器上运行了你的代码,它打印了
P46Y1D -
也许是个愚蠢的问题,但您的计算机时钟设置正确吗? :) (可能值得检查
LocalDate today = new LocalDate(2016, 1, 6);) -
也许可以尝试手动设置 'today' (new LocalDate(2016, 1, 6)) 以缩小问题范围
-
是的,不知怎么的,时钟搞砸了。我仍然停留在 2015 年,所以我什至没有注意到那是它用于计算的日期年份。
-
@AndyTurner 或 Richard... 请根据您的 cmets 发布一个答案,以便它可以被接受并被视为已关闭。或者撤回问题。
标签: java date wolfram-mathematica jodatime