在网上找到了一个计算年龄的java程序代码,但是计算出来的年龄竟然会出现负数,跟踪后发现cal.get(Calendar.MONTH)获取到的月份是从0开始的,代码如下:

public static int getAge(Date birthDay) throws Exception {
        Calendar cal = Calendar.getInstance();

if (cal.before(birthDay)) {
            throw new IllegalArgumentException(
                "出生时间大于当前时间!");
        }

int yearNow = cal.get(Calendar.YEAR);
        int monthNow = cal.get(Calendar.MONTH) + 1;//注意此处,如果不加1的话计算结果是错误的
        int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
        cal.setTime(birthDay);

int yearBirth = cal.get(Calendar.YEAR);
        int monthBirth = cal.get(Calendar.MONTH);
        int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);

int age = yearNow - yearBirth;

if (monthNow <= monthBirth) {
            if (monthNow == monthBirth) {
                //monthNow==monthBirth
                if (dayOfMonthNow < dayOfMonthBirth) {
                    age--;
                } else {
                    //do nothing
                }
            } else {
                //monthNow>monthBirth
                age--;
            }
        } else {
            //monthNow<monthBirth
            //donothing
        }

return age;
    }

转载于:https://www.cnblogs.com/spark_study/archive/2010/02/24/1672543.html

java用Calendar计算年龄的问题相关推荐

  1. java 两日期的周数_利用 Java 中 Calendar 计算两个日期之间的天数和周数

    利用 Java 中 Calendar 计算两个日期之间的天数和周数 前言 究竟什么是一个 Calendar 呢? 中文的翻译就是日历, 那我们立刻可以想到我们生活中有阳 (公) 历阴 (农) 历之分它 ...

  2. Java根据日期计算年龄——精确到天

    最近遇到一个需求,根据孩子的出生日期,计算出孩子当前多大,要求精确到天,如"2岁8个月6天".这里做一下记录,以防以后用到. 以下是博主从简书搜到的一篇代码,奈何找不到原链接了~~ ...

  3. java 计算年龄 Java 根据出生日期计算年龄

    1.把出生日期字符串转换为日期格式. public static Date parse(String strDate) throws ParseException {SimpleDateFormat ...

  4. Java根据生日计算年龄

    //计算年龄private static int getAgeByBirth(Date birthday) {int age = 0;try {Calendar now = Calendar.getI ...

  5. java calendar日期计算_利用Java中Calendar计算两个日期之间的天数和周数

    前言 究竟什么是一个 Calendar 呢?中文的翻译就是日历,那我们立刻可以想到我们生活中有阳(公)历.阴(农)历之分.它们的区别在哪呢? 比如有: 月份的定义 - 阳`(公)历 一年12 个月,每 ...

  6. Java中Calendar 计算商品保质期、促销日期

    利用Date.SimpleDateFormat和Calendar计算商品保质期.设置促销日期并计算出促销日期. package date;import java.text.ParseException ...

  7. java日期相差周_利用Java中Calendar计算两个日期之间的天数和周数

    前言 究竟什么是一个 Calendar 呢?中文的翻译就是日历,那我们立刻可以想到我们生活中有阳(公)历.阴(农)历之分.它们的区别在哪呢? 比如有: 月份的定义 - 阳`(公)历 一年12 个月,每 ...

  8. java根据出生日期计算年龄_Java 根据出生日期获得年纪

    实现步骤: 1.获取当前时间 2.判断出生日期是否小于当前时间,如果大于,则引发一场 3.从当前时间中取出年.月.日:从出生日期中取出年.月.日,年份相减 4.然后做具体判断 示例代码如下: publ ...

  9. java根据生日计算年龄工具类

    private static int getAgeByBirth(Date birthday) {         int age = 0;         try {             Cal ...

  10. Java:出生日期转年龄

    private int getAge(Date birthDay) {Calendar cal = Calendar.getInstance();//出生日期晚于当前时间,无法计算if (cal.be ...

最新文章

  1. 初学php时一些术语以及一些基础知识
  2. SimpleDateFormat处理 dd-MMM-yy类型日期
  3. c语言strcat_s用于调用的参数太少_为什么系统调用会消耗较多资源呢
  4. android smack源码分析——接收消息以及如何解析消息
  5. day4 Python的selenium库
  6. POJ1942 Paths on a Grid(组合)
  7. IMCASH:2019年区块链不会风平浪静,至少还有10件事值得期待
  8. 最新版ins安装包下载
  9. 2D纸娃娃系统的web演示
  10. FreeImage的学习总结总结(四)
  11. JaxWsProxyFactoryBean调用WebService实例
  12. FreeCAD源码分析:Assembly3模块
  13. thinkphp5 TP5 两表关联查询
  14. java文件输入流FileInputStream
  15. 2020 2月 月末总结
  16. CAD二次开发--ZOOM自定义缩放到视口区域,解决SelectCrossingWindow等方法对视口外实体不起作用的问题
  17. RO、RW和ZI的区别
  18. 如何将WORD转成SWF
  19. html中如何写if判断,HTML中的if判断用法
  20. 3306π武汉站嘉宾专访-爱可生技术服务总监洪斌

热门文章

  1. spark性能调优:资源优化
  2. 你不知道的redis——主从复制,因为该命令redis作者曾摊上事
  3. GitLab 内置了 CI/CD 工具,强大啊!!
  4. 硬核干货:你从普通码农到架构师的封神之路
  5. 阿里面试官居然问我如何设计一个本地缓存
  6. 成为一名优秀架构师有标准吗?这12点或许能带给你一些启发
  7. 疑似 B 站后台源码泄露,ikun 潜入?
  8. 标准的软件开发是怎样的?
  9. mysql数据库过滤数据_MySQL数据库常规操作一些简单绕过过滤的方法
  10. *第六周*数据结构实践项目三【括号的配对】