【问题标题】:How can I calculate the age in Java [duplicate]我如何计算Java中的年龄[重复]
【发布时间】:2014-06-10 14:06:09
【问题描述】:

我在计算年龄时遇到问题..

public long getAlter() {

    Date now = new Date();
    long yearInMillis = 365 * 24 * 60 * 60  * 1000;
    long alter =   (now.getTime() - buildYear.getTime()) /365/24/60/60/1000 ;

    return alter;
}
  • 给出的 buildYear:年份 22.05.2007。

--> (dd.mm.yyyy)

  1. 我需要一个函数来计算年份(不是月份左右),在此示例中:7 年。
  2. 我需要一个函数来计算天数,在本例中为 2576 天。

我该如何定义?

像这样: http://www.topster.de/kalender/zeitrechner.php?styp=zeit&sdatum=22.05.2007&szeit=12%3A00%3A00&edatum=&ezeit=12%3A00%3A00&typ=jetzt&subDazu=%2B&jahredazu=0&tagedazu=0&zeitdazu=00%3A00%3A00

(已经选择)

@ALL:这不是重复的,因为我不会和 Joda 合作!

【问题讨论】:

  • 不,我不会使用 Joda!
  • /365/24/60/60/1000 会出现大量舍入错误
  • @user3714925 重复并不只建议 Joda。您还可以使用在 Java 8 或 Calendar 中添加的类,如该问题的不同答案所示。顺便说一句,您在365 * 24 * 60 * 60 * 1000 中遇到整数溢出问题。要解决它,请使用long 作为乘法的第一个参数,因此其余参数也将像365L * 24 * 60 * 60 * 1000 一样长。此外,您没有指定机制是否还应包括时间(小时、分钟)。这个细节很重要,因为1.1.2001 12:002.1.2001 11:59 之间没有一整天,因为你会少一秒钟。

标签: java sql eclipse oop


【解决方案1】:

这个链接似乎做了类似的事情:

How do I calculate someone's age in Java?

万一链接断开,这里是这样说的:

查看 Joda,它可以简化日期/时间计算(Joda 也是 新标准 Java 日期/时间 API 的基础,因此您将 学习即将成为标准的 API)。

编辑:Java 8 将有一些非常相似的东西并且值得 退房。

例如

LocalDate birthdate = new LocalDate (1970, 1, 20);
LocalDate now = new LocalDate();
Years age = Years.yearsBetween(birthdate, now);

这是 尽可能简单。当前的 Java 东西是(正如你已经 识别)有点不直观。

【讨论】:

  • 您的意思是 SO 中的链接?
  • @BrianAgnew 是的 - 我怀疑它永远不会被破坏,但在极少数情况下,问题或答案会被删除。
  • @user3714925 - 你为什么不使用 Joda?
猜你喜欢
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
  • 2013-01-23
  • 2023-03-06
  • 2023-03-14
  • 2015-01-02
  • 2016-03-19
相关资源
最近更新 更多