/**
* This Method is unit tested properly for very different cases , taking
* care of Leap Year days difference in a year, and date cases month and
* Year boundary cases (12/31/1980, 01/01/1980 etc)
*/
public static int getAge(Date dateOfBirth, Date toDate) {
if (dateOfBirth.after(toDate)) {
throw new IllegalArgumentException("the parameter dateOfBirth[" + dateOfBirth
+ "] can not be later than toDate[" + toDate + "]");
}
Calendar toDateCalendar = Calendar.getInstance();
Calendar birthCalendar = Calendar.getInstance();
birthCalendar.setTime(dateOfBirth);
toDateCalendar.setTime(toDate);
int age = toDateCalendar.get(Calendar.YEAR) - birthCalendar.get(Calendar.YEAR);
// If birth date is greater than todays date (after 2 days adjustment of
// leap year) then decrement age one year
if ((birthCalendar.get(Calendar.MONTH) > toDateCalendar.get(Calendar.MONTH))
|| (birthCalendar.get(Calendar.DAY_OF_YEAR)
- toDateCalendar.get(Calendar.DAY_OF_YEAR) > 3)) {
age--;
// If birth date and todays date are of same month and birth day of
// month is greater than todays day of month then decrement age
} else if ((birthCalendar.get(Calendar.MONTH) == toDateCalendar.get(Calendar.MONTH))
&& (birthCalendar.get(Calendar.DAY_OF_MONTH) > toDateCalendar
.get(Calendar.DAY_OF_MONTH))) {
age--;
}
return age;
}
public static int age(Date birthDate, Date toDate) {
if (birthDate.after(toDate)) {
throw new IllegalArgumentException("the parameter birthDate[" + birthDate
+ "] can not be later than toDate[" + toDate + "]");
}
Calendar cal = Calendar.getInstance();
Calendar now = Calendar.getInstance();
cal.setTime(birthDate);
now.setTime(toDate);
int res = now.get(Calendar.YEAR) - cal.get(Calendar.YEAR);
if ((cal.get(Calendar.MONTH) > now.get(Calendar.MONTH))
|| (cal.get(Calendar.MONTH) == now.get(Calendar.MONTH) && cal
.get(Calendar.DAY_OF_MONTH) > now.get(Calendar.DAY_OF_MONTH))) {
res--;
}
return res;
}
分享到:
相关推荐
在本教程中,我们将深入探讨如何使用 Delphi 的日期函数来计算年龄。 首先,我们需要获取用户的出生日期。这通常是从数据库、用户输入或其他数据源获取的。假设我们已经有了一个 `TDate` 类型的变量 `BirthDate` ...
powerbuilder技术开发,根据转入生日,自动计算年龄。
下面将详细介绍两种在Excel中计算年龄的方法。 **方法一:使用DATEDIF()函数** DATEDIF()函数是Excel中的一个隐藏函数,它能够计算两个日期之间的差异,支持以年、月、日为单位。以下是使用DATEDIF()函数计算年龄...
SQLServer 根据生日计算年龄
- 注意:计算年龄时要考虑是否已经过了生日,如果未过,则年龄减一。 3. **判断性别**: - 访问身份证号码的第17位,如果是奇数,表示男性;偶数则表示女性。 - 可以使用`%`(取模)运算符来检查第17位是否为...
在Excel中,计算年龄是一项常见的任务,特别是在处理个人资料或者进行数据分析时。下面将详细介绍几种在Excel中根据出生年月计算年龄的方法。 1. **日期格式的出生年月计算年龄**: 如果出生年月在A1单元格是日期...
### iOS计算年龄的封装知识点详解 #### 一、概述 在iOS开发中,经常会遇到需要根据用户的出生日期来计算其年龄的需求。为了提高代码的复用性和可维护性,可以将这一功能进行封装,形成一个方便调用的方法。本文将...
kettle中使用js计算年龄
通过入参 生日 ,计算日期(默认sysdate),计算年龄 精确到秒
sql 语句 根据身份证号计算年龄,oracl数据库可以直接运行
本主题将深入探讨如何利用datepicker来计算年龄,这是一个在Web开发、移动应用开发等领域经常遇到的问题。 首先,让我们了解什么是datepicker。日期选择器是一个交互式的控件,它提供了一个友好的图形用户界面,...
3. **JavaScript**:JavaScript是网页动态交互的关键,它负责处理用户的输入,计算年龄,并更新显示的结果。在这个应用中,JavaScript函数会被绑定到按钮的点击事件上,当用户选择日期并点击按钮后,这些函数会执行...
sql函数 可用于pb调用,根据生日日期,自动精确计算年龄。返回格式为xx岁xx月xx天 不受闰年影响
### 根据生日计算年龄的JavaScript方法 在日常开发中,我们经常需要处理与日期相关的逻辑,例如根据用户的出生日期来计算其年龄。这在很多应用场景下都非常实用,比如用户注册、年龄验证等功能。下面将详细介绍如何...
SQLSERVER计算年龄(岁月天),可以精确到岁,月,几月几天。
### Java根据日期计算年龄与星期知识点详解 #### 一、概述 在Java中处理日期时,经常需要根据特定的日期来计算出年龄或者确定该日期是星期几。这对于开发涉及日期处理的应用程序非常实用。本文将详细介绍如何使用...
"日期选择,可以自动计算年龄和星座"这个标题所指的,是一个能够帮助用户选择出生日期,并根据所选日期自动计算出年龄和星座的功能。这种功能在移动应用中很常见,它提升了用户体验,减少了用户的输入负担。 首先,...
Java根据生日计算年龄算法 不满一年计算月份 不满一月计算天数
1、支持18、16位身份证号码,支持2、4、6、8位生日格式(例:88,1988,198804,...3、最小年龄和最大年龄用来设置输出年龄的范围。 4、计算日期默认为系统日期,可设置任意日期(例:2019年底须计算2020年体检单位日期)
在sqlserver中采用存储过程或函数计算年龄/周岁