生日转年龄

2017-01-10  本文已影响0人  Slience无言

思路

  1. 获取Date类型的生日,之后转换成毫秒,再把当前的毫秒数相减就可以获得到用户活了多少毫秒,再把毫秒转换成天转换成年即可,可能需要处理一下闰年的情况
  2. 获取Date类型的生日,转换成Calendar,把当前时间也转成Calendar之后获取两者Calendar.YEAR,两者相减,之后判断生日的Calendar.DAY_OF_YEAR是否大于当前时间,如果大于说明还没有到今年的生日,刚刚算出来的年龄要减一

实现

1.转换毫秒(没有处理闰年的)

        String dateStr = "1999-1-1";
        Date date = Date.valueOf(dateStr);
        Date now = new Date(System.currentTimeMillis());
        //相差天数
        int day = (int)((now.getTime()-date.getTime()) / (1000 * 60 * 60 * 24));
        System.out.println("年龄=" + (day / 365));

2.使用Calendar

        String dateStr = "1999-1-1"; //生日
        Date date = Date.valueOf(dateStr);
        Calendar now = Calendar.getInstance();
        Calendar birth = Calendar.getInstance();
        birth.setTime(date);
        int age = 0;
        if(birth.after(now)) {
            //当生日在当前时间的前面的时候->这是不可能的
        } else {
            age = now.get(Calendar.YEAR) - birth.get(Calendar.YEAR);
            if(now.get(Calendar.DAY_OF_YEAR) < birth.get(Calendar.DAY_OF_YEAR)) {
                age -= 1;
            }
        }
        System.out.println("年龄=" + age);

个人比较推荐第二种方法,比较直接而且日期计算一般都不直接用Date相关的方法的。

上一篇 下一篇

猜你喜欢

热点阅读