Java工具类DateUtils实例详解
本文实例为大家分享了Java工具类DateUtils的具体代码,供大家参考,具体内容如下
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;
/**
*描述:公共日期工具类
*/
publicclassDateUtils{
publicstaticStringDATE_FORMAT="yyyy-MM-dd";
publicstaticStringDATE_TIME_FORMAT="yyyy-MM-ddHH:mm:ss";
publicstaticStringDATE_FORMAT_CHINESE="yyyy年M月d日";
/**
*获取当前日期
*
*
*@return
*
*/
publicstaticStringgetCurrentDate(){
Stringdatestr=null;
SimpleDateFormatdf=newSimpleDateFormat(DateUtils.DATE_FORMAT);
datestr=df.format(newDate());
returndatestr;
}
/**
*获取当前日期时间
*
*
*@return
*
*/
publicstaticStringgetCurrentDateTime(){
Stringdatestr=null;
SimpleDateFormatdf=newSimpleDateFormat(DateUtils.DATE_TIME_FORMAT);
datestr=df.format(newDate());
returndatestr;
}
/**
*获取当前日期时间
*
*
*@return
*
*/
publicstaticStringgetCurrentDateTime(StringDateformat){
Stringdatestr=null;
SimpleDateFormatdf=newSimpleDateFormat(Dateformat);
datestr=df.format(newDate());
returndatestr;
}
publicstaticStringdateToDateTime(Datedate){
Stringdatestr=null;
SimpleDateFormatdf=newSimpleDateFormat(DateUtils.DATE_TIME_FORMAT);
datestr=df.format(date);
returndatestr;
}
/**
*将字符串日期转换为日期格式
*
*
*@paramdatestr
*@return
*
*/
publicstaticDatestringToDate(Stringdatestr){
if(datestr==null||datestr.equals("")){
returnnull;
}
Datedate=newDate();
SimpleDateFormatdf=newSimpleDateFormat(DateUtils.DATE_FORMAT);
try{
date=df.parse(datestr);
}catch(ParseExceptione){
date=DateUtils.stringToDate(datestr,"yyyyMMdd");
}
returndate;
}
/**
*将字符串日期转换为日期格式
*自定義格式
*
*@paramdatestr
*@return
*
*/
publicstaticDatestringToDate(Stringdatestr,Stringdateformat){
Datedate=newDate();
SimpleDateFormatdf=newSimpleDateFormat(dateformat);
try{
date=df.parse(datestr);
}catch(ParseExceptione){
e.printStackTrace();
}
returndate;
}
/**
*将日期格式日期转换为字符串格式
*
*
*@paramdate
*@return
*
*/
publicstaticStringdateToString(Datedate){
Stringdatestr=null;
SimpleDateFormatdf=newSimpleDateFormat(DateUtils.DATE_FORMAT);
datestr=df.format(date);
returndatestr;
}
/**
*将日期格式日期转换为字符串格式自定義格式
*
*@paramdate
*@paramdateformat
*@return
*/
publicstaticStringdateToString(Datedate,Stringdateformat){
Stringdatestr=null;
SimpleDateFormatdf=newSimpleDateFormat(dateformat);
datestr=df.format(date);
returndatestr;
}
/**
*获取日期的DAY值
*
*
*@paramdate
*输入日期
*@return
*
*/
publicstaticintgetDayOfDate(Datedate){
intd=0;
Calendarcd=Calendar.getInstance();
cd.setTime(date);
d=cd.get(Calendar.DAY_OF_MONTH);
returnd;
}
/**
*获取日期的MONTH值
*
*
*@paramdate
*输入日期
*@return
*
*/
publicstaticintgetMonthOfDate(Datedate){
intm=0;
Calendarcd=Calendar.getInstance();
cd.setTime(date);
m=cd.get(Calendar.MONTH)+1;
returnm;
}
/**
*获取日期的YEAR值
*
*
*@paramdate
*输入日期
*@return
*
*/
publicstaticintgetYearOfDate(Datedate){
inty=0;
Calendarcd=Calendar.getInstance();
cd.setTime(date);
y=cd.get(Calendar.YEAR);
returny;
}
/**
*获取星期几
*
*
*@paramdate
*输入日期
*@return
*
*/
publicstaticintgetWeekOfDate(Datedate){
intwd=0;
Calendarcd=Calendar.getInstance();
cd.setTime(date);
wd=cd.get(Calendar.DAY_OF_WEEK)-1;
returnwd;
}
/**
*获取输入日期的当月第一天
*
*
*@paramdate
*输入日期
*@return
*
*/
publicstaticDategetFirstDayOfMonth(Datedate){
Calendarcd=Calendar.getInstance();
cd.setTime(date);
cd.set(Calendar.DAY_OF_MONTH,1);
returncd.getTime();
}
/**
*获得输入日期的当月最后一天
*
*@paramdate
*/
publicstaticDategetLastDayOfMonth(Datedate){
returnDateUtils.addDay(DateUtils.getFirstDayOfMonth(DateUtils.addMonth(date,1)),-1);
}
/**
*判断是否是闰年
*
*
*@paramdate
*输入日期
*@return是true否false
*
*/
publicstaticbooleanisLeapYEAR(Datedate){
Calendarcd=Calendar.getInstance();
cd.setTime(date);
intyear=cd.get(Calendar.YEAR);
if(year%4==0&&year%100!=0|year%400==0){
returntrue;
}else{
returnfalse;
}
}
/**
*根据整型数表示的年月日,生成日期类型格式
*
*@paramyear
*年
*@parammonth
*月
*@paramday
*日
*@return
*
*/
publicstaticDategetDateByYMD(intyear,intmonth,intday){
Calendarcd=Calendar.getInstance();
cd.set(year,month-1,day);
returncd.getTime();
}
/**
*获取年周期对应日
*
*@paramdate
*输入日期
*@paramiyear
*年数負數表示之前
*@return
*
*/
publicstaticDategetYearCycleOfDate(Datedate,intiyear){
Calendarcd=Calendar.getInstance();
cd.setTime(date);
cd.add(Calendar.YEAR,iyear);
returncd.getTime();
}
/**
*获取月周期对应日
*
*@paramdate
*输入日期
*@parami
*@return
*
*/
publicstaticDategetMonthCycleOfDate(Datedate,inti){
Calendarcd=Calendar.getInstance();
cd.setTime(date);
cd.add(Calendar.MONTH,i);
returncd.getTime();
}
/**
*计算fromDate到toDate相差多少年
*
*@paramfromDate
*@paramtoDate
*@return年数
*
*/
publicstaticintgetYearByMinusDate(DatefromDate,DatetoDate){
Calendardf=Calendar.getInstance();
df.setTime(fromDate);
Calendardt=Calendar.getInstance();
dt.setTime(toDate);
returndt.get(Calendar.YEAR)-df.get(Calendar.YEAR);
}
/**
*计算fromDate到toDate相差多少个月
*
*@paramfromDate
*@paramtoDate
*@return月数
*
*/
publicstaticintgetMonthByMinusDate(DatefromDate,DatetoDate){
Calendardf=Calendar.getInstance();
df.setTime(fromDate);
Calendardt=Calendar.getInstance();
dt.setTime(toDate);
returndt.get(Calendar.YEAR)*12+dt.get(Calendar.MONTH)-
(df.get(Calendar.YEAR)*12+df.get(Calendar.MONTH));
}
/**
*计算fromDate到toDate相差多少天
*
*@paramfromDate
*@paramtoDate
*@return天数
*
*/
publicstaticlonggetDayByMinusDate(ObjectfromDate,ObjecttoDate){
Datef=DateUtils.chgObject(fromDate);
Datet=DateUtils.chgObject(toDate);
longfd=f.getTime();
longtd=t.getTime();
return(td-fd)/(24L*60L*60L*1000L);
}
/**
*计算年龄
*
*@parambirthday
*生日日期
*@paramcalcDate
*要计算的日期点
*@return
*
*/
publicstaticintcalcAge(Datebirthday,DatecalcDate){
intcYear=DateUtils.getYearOfDate(calcDate);
intcMonth=DateUtils.getMonthOfDate(calcDate);
intcDay=DateUtils.getDayOfDate(calcDate);
intbYear=DateUtils.getYearOfDate(birthday);
intbMonth=DateUtils.getMonthOfDate(birthday);
intbDay=DateUtils.getDayOfDate(birthday);
if(cMonth>bMonth||(cMonth==bMonth&&cDay>bDay)){
returncYear-bYear;
}else{
returncYear-1-bYear;
}
}
/**
*从身份证中获取出生日期
*
*@paramidno
*身份证号码
*@return
*
*/
publicstaticStringgetBirthDayFromIDCard(Stringidno){
Calendarcd=Calendar.getInstance();
if(idno.length()==15){
cd.set(Calendar.YEAR,Integer.valueOf("19"+idno.substring(6,8))
.intValue());
cd.set(Calendar.MONTH,Integer.valueOf(idno.substring(8,10))
.intValue()-1);
cd.set(Calendar.DAY_OF_MONTH,
Integer.valueOf(idno.substring(10,12)).intValue());
}elseif(idno.length()==18){
cd.set(Calendar.YEAR,Integer.valueOf(idno.substring(6,10))
.intValue());
cd.set(Calendar.MONTH,Integer.valueOf(idno.substring(10,12))
.intValue()-1);
cd.set(Calendar.DAY_OF_MONTH,
Integer.valueOf(idno.substring(12,14)).intValue());
}
returnDateUtils.dateToString(cd.getTime());
}
/**
*在输入日期上增加(+)或减去(-)天数
*
*@paramdate
*输入日期
*@paramimonth
*要增加或减少的天数
*/
publicstaticDateaddDay(Datedate,intiday){
Calendarcd=Calendar.getInstance();
cd.setTime(date);
cd.add(Calendar.DAY_OF_MONTH,iday);
returncd.getTime();
}
/**
*在输入日期上增加(+)或减去(-)月份
*
*@paramdate
*输入日期
*@paramimonth
*要增加或减少的月分数
*/
publicstaticDateaddMonth(Datedate,intimonth){
Calendarcd=Calendar.getInstance();
cd.setTime(date);
cd.add(Calendar.MONTH,imonth);
returncd.getTime();
}
/**
*在输入日期上增加(+)或减去(-)年份
*
*@paramdate
*输入日期
*@paramimonth
*要增加或减少的年数
*/
publicstaticDateaddYear(Datedate,intiyear){
Calendarcd=Calendar.getInstance();
cd.setTime(date);
cd.add(Calendar.YEAR,iyear);
returncd.getTime();
}
/**
*將OBJECT類型轉換為Date
*@paramdate
*@return
*/
publicstaticDatechgObject(Objectdate){
if(date!=null&&dateinstanceofDate){
return(Date)date;
}
if(date!=null&&dateinstanceofString){
returnDateUtils.stringToDate((String)date);
}
returnnull;
}
publicstaticlonggetAgeByBirthday(Stringdate){
Datebirthday=stringToDate(date,"yyyy-MM-dd");
longsec=newDate().getTime()-birthday.getTime();
longage=sec/(1000*60*60*24)/365;
returnage;
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//Stringtemp=DateUtil.dateToString(getLastDayOfMonth(newDate()),
///DateUtil.DATE_FORMAT_CHINESE);
//Strings=DateUtil.dateToString(DateUtil.addDay(DateUtil.addYear(newDate(),1),-1));
longs=DateUtils.getDayByMinusDate("2012-01-01","2012-12-31");
System.err.println(s);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。