学习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); } }