java自定义Date工具类,计算年龄

来源:互联网 发布:什么是观测数据 编辑:程序博客网 时间:2024/06/05 12:05
package com.pam.utils;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/** * 处理时间工具类 *  * @author xuyang * */public class DateUtil {/*** 格式类型:"yyyyMM"*/public static final String DATE_JFP_STR = "yyyyMM";/*** 格式类型:"yyyy-MM-dd HH:mm:ss"*/public static final String DATE_FULL_STR = "yyyy-MM-dd HH:mm:ss";/*** 格式类型:"yyyy-MM-dd HH:mm:ss:SS"*/public static final String DATE_FULL_SS_STR = "yyyy-MM-dd HH:mm:ss:SS";/*** 格式类型:"yyyy-MM-dd"*/public static final String DATE_SMALL_STR = "yyyy-MM-dd";/*** 格式类型:"yyMMddHHmmss"*/public static final String DATE_KEY_STR = "yyMMddHHmmss";/*** 格式类型:"yyMMddHHmmssSS"*/public static final String DATE_FULL_KEY_SS_STR = "yyyyMMddHHmmssSS";/*** 格式类型:"yyyy-MM-dd-HH-mm-ss"*/public static final String DATE_KEY_FULL_STR = "yyyy-MM-dd-HH-mm-ss";/*** 格式类型:"yyyyMMdd"*/public static final String DATE_YYYYMMDD_STR = "yyyyMMdd";/*** 格式类型:"MM/dd/yyyy"*/public static final String STR_MMDDYYYY_DATE = "MM/dd/yyyy";/*** 格式类型:"MM/dd/yyyy HH:mm:ss"*/public static final String STR_MMDDYYYYHHMMSS_DATE = "MM/dd/yyyy HH:mm:ss";/*** 格式类型:"yyyy/MM/dd HH:mm:ss"*/public static final String STR_YYYYMMDDHHMMSS_DATE = "yyyy/MM/dd HH:mm:ss";/*** 格式类型:"yyyy,MM,dd,HH,mm"*/public static final String DATE_YYYY_MM_DD_HH_MM = "yyyy,MM,dd,HH,mm";/*** 将Date转换为特定格式字符串* * @param date*            要格式化的源时间coordinate* @param pattern*            要转化的目的格式;例:"yyyy-MM-dd HH:mm:ss"* @return String*/public static String getDateToString(Date date, String pattern) {String returnValue = "";if (date != null) {SimpleDateFormat sdf = new SimpleDateFormat(pattern);returnValue = sdf.format(date);}return returnValue;}/*** 将字符串转换为Date* * @param dateStr*            要格式化的源时间字符串* @param pattern*            要转化的目的格式;例:"yyyy-MM-dd HH:mm:ss"* @return Date*/public static Date getStringToDate(String dateStr, String pattern) {SimpleDateFormat sdf = new SimpleDateFormat(pattern);try {return sdf.parse(dateStr);} catch (ParseException e) {e.printStackTrace();}return null;}/*** Date转Calender* * @param date*            要转化的源时间* @return Calendar*/public static Calendar getDateToCalendar(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);return calendar;}/*** Calender转Date* * @param date*            要转化的源时间* @return Date*/public static Date getCalendarToDate(Calendar calendar) {return calendar.getTime();}/*** 增加或减少时间后的时间* * @param date*            要增加或减少的源时间* @param dateType*            取值Calendar常量;例:Calendar.MINUTE* @param amount*            对应增加或减少的数量;例:+5或-5* @return Date*/public static Date getDateAfterAddOrSubtract(Date date, int dateType, int amount) {Date newDate = null;if (date != null) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.add(dateType, amount);newDate = calendar.getTime();}return newDate;}/*** 获取日期中的某数值* * @param date*            要取值的源时间* @param dateType*            取值Calendar常量;例:Calendar.MINUTE* @return Integer*/public static Integer getInteger(Date date, int dateType) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);return calendar.get(dateType);}/*** 获取日期中的分钟数* * @param date*            要取值的源时间* @return Integer*/public static Integer getMinute(Date date) {return getInteger(date, Calendar.MINUTE);}/*** 获取日期中的小时数(24小时)* * @param date*            要取值的源时间* @return Integer*/public static Integer getHourFor24(Date date) {return getInteger(date, Calendar.HOUR_OF_DAY);}/*** 获取日期中的小时数(12小时)* * @param date*            要取值的源时间* @return Integer*/public static Integer getHourFor12(Date date) {return getInteger(date, Calendar.HOUR);}/*** 获取日期中的秒数* * @param date*            要取值的源时间* @return Integer*/public static Integer getSecond(Date date) {return getInteger(date, Calendar.SECOND);}/*** 获取日期中的天数* * @param date*            要取值的源时间* @return Integer*/public static Integer getDay(Date date) {return getInteger(date, Calendar.DATE);}/*** 获取日期中的月数* * @param date*            要取值的源时间* @return Integer*/public static Integer getMonth(Date date) {return getInteger(date, Calendar.MONTH) + 1;}/*** 获取日期中的年数* * @param date*            要取值的源时间* @return Integer*/public static Integer getYear(Date date) {return getInteger(date, Calendar.YEAR);}/*** 获取年龄* @param birthDate* @return*/public static int getAge(Date birthDate) {if (birthDate == null)throw new RuntimeException("出生日期不能为null");int age = 0;Date now = new Date();SimpleDateFormat format_y = new SimpleDateFormat("yyyy");SimpleDateFormat format_M = new SimpleDateFormat("MM");SimpleDateFormat format_d = new SimpleDateFormat("dd");String birth_year = format_y.format(birthDate);String this_year = format_y.format(now);String birth_month = format_M.format(birthDate);String this_month = format_M.format(now);String birth_day = format_d.format(birthDate);String this_day = format_d.format(now);// 初步,估算age = Integer.parseInt(this_year) - Integer.parseInt(birth_year);// 如果未到出生月份,则age - 1if (this_month.compareTo(birth_month) < 0){age -= 1;}else{if(this_day.compareTo(birth_day) < 0){age -= 1;}}if (age < 0)age = 0;return age;}}

0 0