根据出生年月日计算出生了多少年,多少月,多少天

1,定义一个方法获得出生日期的Date类型时间

/*** // 格式化字符串类型的时间* @param birthday* @return* @throws ParseException*/public static Date getDateFormat(String birthday) throws ParseException {// 格式化字符串类型的时间SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");// 得到Date类型的时间Date parse = simpleDateFormat.parse(birthday);return parse;}

2,根据出生的时间Date和当前时间Date来计算出生了多少年,多少月,多少天

/*** 根据出生时间Date和当前时间Date来计算出生年月日* @param birthday* @throws ParseException*/public static void getAge(String birthday) throws ParseException {// 格式化传入的字符串类型的时间,转为Date类型对象Date dateFormat = getDateFormat(birthday);// 得到时间戳long birTime = dateFormat.getTime();// 创建Calendar来获取当前的时间,及其时间戳Calendar calendar = Calendar.getInstance();Date date = calendar.getTime();long nowTime = date.getTime();// 参与计算的当前时间必须大于出生日期才可以计算if (nowTime < birTime) { // 出生时间在当前时间之后,报错,无法计算throw new IllegalArgumentException("对比的出生时间晚于当前的时间,无法进行比较!");}// 获取当前 年 月 日int nowYear = calendar.get(Calendar.YEAR);int nowMon = calendar.get(Calendar.MONDAY) + 1; // 月份从0开始 所以+1int nowDay = calendar.get(Calendar.DAY_OF_MONTH);System.out.println("当前 年 月 日:"+nowYear + " " + nowMon + " " + nowDay);// 创建Calendar来存出生年 月 日Calendar calendar2 = Calendar.getInstance();// 将出生日期时间戳存入calendar 得到出生时的年 月 日calendar2.setTime(dateFormat);// 获取出生时 年 月 日int birYear = calendar2.get(Calendar.YEAR);int birMon = calendar2.get(Calendar.MONDAY) + 1; // 月份从0开始 所以+1int birDay = calendar2.get(Calendar.DAY_OF_MONTH);System.out.println("出生时的年 月 日:"+birYear + " " + birMon + " " + birDay);// 计算出生至今的 年龄/月份/天数int age = nowYear - birYear; // 获得年龄int mon = 0;int day = 0;if (nowMon >= birMon) { // 当前月份大于出生时月份mon = nowMon - birMon; // 获得出生月份if (nowDay >= birDay) {  // 当天大于等于出生那天day = nowDay - birDay; // 直接获得出生天数} else { // 当天小于出生那天mon = mon - 1; // 月份减少1day = birDay - nowDay; // 天数差int maximum = calendar.getActualMaximum(Calendar.DATE); // 当前月天数day = maximum - day; // 获得出生天数}} else { // 当前月份小于出生时月份age = age - 1;// 当前月份小于出生时月份   年龄减 1mon = 12 - (birMon - nowMon); // 获得出生月份if (nowDay >= birDay) { // 当天大于等于出生那天day = nowDay - birDay; // 直接获得出生天数} else { // 当天小于出生那天mon = mon - 1; // 月份-1day = birDay - nowDay; // 天数差int maximum = calendar.getActualMaximum(Calendar.DATE); // 当前月天数day = maximum - day; // 获得出生天数}}System.out.println("出生日期:" + birYear + " " + birMon + " " + birDay);System.out.println(age + "岁 " + mon + "月 " + day + "天");}

测试

public static void main(String[] args) throws ParseException {String birthday = "2000-9-31";getAge(birthday); // 查询结果 20岁 10月 20天}

根据出生年月日计算出生了多少年,多少月,多少天相关推荐

  1. php 输入出生年月日计算年纪,PHP实现根据出生年月日计算年龄的功能(代码示例)...

    本篇文章给大家介绍一下使用PHP实现根据出生年月日计算年龄的功能,结合实例形式分析了php日期相关转换与计算操作技巧.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 废话不多说,之间 ...

  2. PHP实现根据出生年月日计算年龄的功能(代码示例)

    本篇文章给大家介绍一下使用php实现根据出生年月日计算年龄的功能,结合实例形式分析了php日期相关转换与计算操作技巧.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 废话不多说,之间 ...

  3. 根据Date类型出生年月日计算出年龄

    要求:给一个Date类型的出生时间,出身年月日使用时间选择器选取,得到此人的年龄,要求年龄限制在1-100岁之间. 1.在jsp页面得到出生时间,格式为yyyy-MM-dd HH:mm:ss,限定最小 ...

  4. Java工具-根据出生年月日计算出年龄

    我不写代码,我只是代码的搬运工 package com.example.demo.test.时间; import java.text.SimpleDateFormat; import java.uti ...

  5. mysql中根据出生年月日计算年龄。

    通过获取当前时间的年月日,然后获取年份,再过获取数据中的年月日获取年份. select year(CURDATE())-year(sbirthday) from student; 这种方式获取的年龄并 ...

  6. 从键盘录入身份证号码,然后从中截取出生年月日,最后输出”xxxx年xx月xx日”

    public class Test1 {public static void main(String[] args) {System.out.print("请录入身份证号:"); ...

  7. Excel如何提取身份证中出生年月日、计算年龄、性别

    身份证号是18位,前6位是所属省市区.7至14位是出生年月日.其中第17位表示性别,奇数为男性,偶数女性 身份证号 340204198107181456 340204199504172986 3426 ...

  8. java 输入出生年月_java代码实现输入你出生年月日,计算到今天已经度过了多少天...

    输入出生年月日,计算到今天为止已经经过了多少天 import java.text.ParseException; import java.text.SimpleDateFormat; import j ...

  9. Access根据出生日期计算年龄_WPS表格技巧—如何根据出生年月日求虚岁年龄

    我们在利用WPS表格和Excel表格进行日常办公时,经常需要计算年龄,那么如果我们想要根据出生年月日求虚岁年龄的话,还要一个一个数吗?当然不必,今天我们就来教大家如何计算年龄根据出生年月日求虚岁年龄, ...

最新文章

  1. 【ThinkPHP3.2.3】学习ThinkPHP笔记:框架中的配置文件(3)
  2. 自己实现一个最简单的数据库
  3. php 隐式路由,关于Laravel 7 的简单隐式路由模型绑定
  4. Fiddler使用方法简介
  5. 【转】使用ant来调用Jmeter,并定制运行时参数
  6. ArcMap下栅格图象矢量化步骤:
  7. 符号库匹配不对的原因_整理了几种离合器打滑的原因,再安装调试时可别弄错了...
  8. node.js学习笔记之模拟路由
  9. 10月24日云栖精选夜读:2017杭州·云栖大会完美收官 虚拟化平台精彩回顾
  10. 【OpenCV入门指南】第二篇 缩放图像
  11. [转]《编程之道》(很老的一篇文章)
  12. 项目质量管理__七种基本质量工具__老七工具和新七工具
  13. 【Vue】win10启动vue项目报错: errno: -4058, code: ‘ENOENT‘, syscall: ‘spawn cmd‘
  14. Javascript网页打印大全
  15. DyingGasp电路(掉电检测电路)设计
  16. 字符串部分常用API
  17. 小草说----大数据和机器学习为什么这样火
  18. 物联网平台ThingsBoard的安装
  19. REDIS缓存集群介绍
  20. STM32MP157驱动开发——蜂鸣器设备驱动

热门文章

  1. 用PHP输出对称菱形的简易办法
  2. 去吗?去啊!喜欢就不要再犹豫
  3. pip 不使用本地缓存安装指定库
  4. 支持苹果18W-60W PD快充协议芯片JD6606S
  5. David P.Williams论文系列 SAS图像分辨率与目标检测性能的关系
  6. 喜马拉雅 批量重命名
  7. jenkins安装了中文插件发现界面还有英文的解决方法
  8. TZT1306标准模拟应变源
  9. 【GAMES101 作业4】贝塞尔曲线+反走样
  10. ElasticSearch的简单了解和使用