为了账号安全,请及时绑定邮箱和手机立即绑定

如何用Java计算某人的年龄?

如何用Java计算某人的年龄?

慕姐4208626 2019-06-21 15:28:59
如何用Java计算某人的年龄?我想在Java方法中作为int返回一个以年为单位的年龄。下面是getBirthDate()返回日期对象(带有生日;-)的下面内容:public int getAge() {     long ageInMillis = new Date().getTime() - getBirthDate().getTime();     Date age = new Date(ageInMillis);     return age.getYear();}但是,既然getYear()被废弃了,我想知道是否有更好的方法来做到这一点?我甚至不确定这是否正确,因为我还没有进行单元测试。
查看完整描述

3 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

JDK 8使它变得简单而优雅:

public class AgeCalculator {

    public static int calculateAge(LocalDate birthDate, LocalDate currentDate) {
        if ((birthDate != null) && (currentDate != null)) {
            return Period.between(birthDate, currentDate).getYears();
        } else {
            return 0;
        }
    }}

通过一个JUnit测试来演示它的使用:

public class AgeCalculatorTest {

    @Test
    public void testCalculateAge_Success() {
        // setup
        LocalDate birthDate = LocalDate.of(1961, 5, 17);
        // exercise
        int actual = AgeCalculator.calculateAge(birthDate, LocalDate.of(2016, 7, 12));
        // assert
        Assert.assertEquals(55, actual);
    }}

现在每个人都应该使用JDK 8了。所有早期的版本都已经结束了他们的支持生命。


查看完整回答
反对 回复 2019-06-21
?
POPMUISE

TA贡献1765条经验 获得超5个赞

检查尤达,这简化了日期/时间计算(Joda也是新的标准Java日期/时间API的基础,因此您将学习一个即将成为标准的API)。

编辑:Java 8有非常相似的东西值得一看。

G.

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

这是你想要的最简单的。预Java 8的内容(正如您已经发现的那样)有些不直观。


查看完整回答
反对 回复 2019-06-21
  • 3 回答
  • 0 关注
  • 1301 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信