学习Java的Date、Calendar日期操作
本文介绍了Java开发过程中日期相关操作,分享的代码如下:
packagejse;
importjava.io.UnsupportedEncodingException;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;
importjava.util.Locale;
/**
*常用日期操作
*
*@authorpuck
*createDate2015-07-3022:54:38
*/
publicclassTestDate
{
publicstaticvoidmain(String[]args)throwsParseException,UnsupportedEncodingException
{
Calendarcal=Calendar.getInstance();
//cal.add(Calendar.DAY_OF_MONTH,-48);
System.out.println(dateToString(cal));
}
/**
*日期格式化
*@paramdate
*@return
*/
publicstaticStringdateToString(Datedate)
{
//SimpleDateFormatformat=newSimpleDateFormat("y年MM月dd日EHH时mm分ss秒",Locale.CHINA);
//SimpleDateFormatformat=newSimpleDateFormat("y年M月d日EH时m分s秒",Locale.CHINA);
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss",Locale.CHINA);//example
returnsdf.format(date);
}
/**
*日期格式化
*@paramdate
*@return
*/
publicstaticStringdateToString(Calendarcal)
{
returndateToString(cal.getTime());
}
/**
*dateString转Calendar
*
*@paramDate
*format:2015-06-16date
*@returnCalendar
*@throwsParseException
*/
publicstaticCalendardateStringToCalendar(StringdateStr)throwsParseException
{
//Calendarcal=Calendar.getInstance();
//cal.clear();
//cal.set(Integer.parseInt(date.substring(0,4)),Integer.parseInt(date.substring(5,7))-1,
//Integer.parseInt(date.substring(8,10)));
//returncal;
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
Datedate=sdf.parse(dateStr);
Calendarcal=Calendar.getInstance();
cal.setTime(date);
returncal;
}
/**
*dateString转Date
*
*@paramDate
*format:yyyy-MM-ddHH:mm:ssdate
*@returnCalendar
*@throwsParseException
*/
publicstaticDatedateStringToDate(Stringdate)throwsParseException
{
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
returnsdf.parse(date);
}
/**
*DateConverttoCalendar
*
*@paramdate
*@return
*/
publicstaticCalendardateToCalendar(Datedate)
{
Calendarc1=Calendar.getInstance();
c1.setTime(date);
returnc1;
}
/**
*CalendarConvertToDate
*@paramcal
*@return
*/
publicstaticDateCalendarToDate(Calendarcal)
{
returncal.getTime();
}
/**
*计算两个日期相差年月日
*
*@paramDate
*c1
*@paramDate
*c2
*@returnint[]{year,month,day}
*/
publicint[]calculateDifferDay(Dated1,Dated2)
{
Calendarc1=Calendar.getInstance();
c1.setTime(d1);
Calendarc2=Calendar.getInstance();
c1.setTime(d2);
returncalculateDifferDay(c1,c2);
}
/**
*计算两个日期相差年月日
*
*@paramCalendar
*c1
*@paramCalendar
*c2
*@returnint[]{year,month,day}
*/
publicint[]calculateDifferDay(Calendarc1,Calendarc2)
{
int[]p1={c1.get(Calendar.YEAR),c1.get(Calendar.MONTH),c1.get(Calendar.DAY_OF_MONTH)};
int[]p2={c2.get(Calendar.YEAR),c2.get(Calendar.MONTH),c2.get(Calendar.DAY_OF_MONTH)};
System.out.println("p1[0]="+p1[0]+"p1[1]="+p1[1]+"p1[2]="+p1[2]);
System.out.println("p2[0]="+p2[0]+"p2[1]="+p2[1]+"p2[2]="+p2[2]);
intyear=p2[0]-p1[0];
intmonth=(p2[0]*12)+p2[1]-((p1[0]*12)+p1[1]);
intday=(int)((c2.getTimeInMillis()-c1.getTimeInMillis())/(24*60*60*1000));
returnnewint[]{year,month,day};
}
/**
*获取日期所在周的第一天
*
*@paramc
*@return
*/
publicstaticCalendargetLastDayOfWeek(Calendarc)
{
//SimpleDateFormatformat2=newSimpleDateFormat("y年M月d日EH时m分s秒",Locale.CHINA);
//System.out.println("当前时间:"+format2.format(c.getTime()));
c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
//System.out.println("周一时间:"+format2.format(c.getTime()));
returnc;
}
/**
*日期加减
*@paramc
*@paramday
*@return
*/
publicstaticCalendaraddOrDecreaseDay(Calendarc,intday)
{
c.add(Calendar.DAY_OF_MONTH,day);
returnc;
}
/**
*获取月最后一天
*@paramyear
*@parammonth
*@return
*/
publicstaticintgetLastDayOfMonth(intyear,intmonth)
{
Calendarc=Calendar.getInstance();
c.set(year,month-1,1);
returnc.getActualMaximum(Calendar.DAY_OF_MONTH);
}
/**
*获取月最后一天
*@paramcal
*@return
*/
publicstaticintgetLastDayOfMonth(Calendarcal)
{
returncal.getActualMaximum(Calendar.DAY_OF_MONTH);
}
}