【问题标题】:Joda-Time Period CalculationJoda-时间段计算
【发布时间】: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


【解决方案1】:

我认为这是因为您的计算机时钟设置不正确。如下对日期进行硬编码会产生预期的结果:

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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多