JAVA时间日期处理类实例
本文实例讲述了JAVA时间日期处理类,主要用来遍历两个日期之间的每一天。分享给大家供大家参考。具体如下:
/** * *文件名:AccountDate.java * *创建时间:2008-11-18 * *Email:**@163.com */ importjava.text.DecimalFormat; importjava.text.ParseException; importjava.text.SimpleDateFormat; importjava.util.ArrayList; importjava.util.Date; importjava.util.List; publicclassAccountDate{ privatestatictransientintgregorianCutoverYear=1582; /**闰年中每月天数*/ privatestaticfinalint[]DAYS_P_MONTH_LY={31,29,31,30,31,30,31,31,30,31,30,31}; /**非闰年中每月天数*/ privatestaticfinalint[]DAYS_P_MONTH_CY={31,28,31,30,31,30,31,31,30,31,30,31}; /**代表数组里的年、月、日*/ privatestaticfinalintY=0,M=1,D=2; /** *将代表日期的字符串分割为代表年月日的整形数组 *@paramdate *@return */ publicstaticint[]splitYMD(Stringdate){ date=date.replace("-",""); int[]ymd={0,0,0}; ymd[Y]=Integer.parseInt(date.substring(0,4)); ymd[M]=Integer.parseInt(date.substring(4,6)); ymd[D]=Integer.parseInt(date.substring(6,8)); returnymd; } /** *检查传入的参数代表的年份是否为闰年 *@paramyear *@return */ publicstaticbooleanisLeapYear(intyear){ returnyear>=gregorianCutoverYear? ((year%4==0)&&((year%100!=0)||(year%400==0))):(year%4==0); } /** *日期加1天 *@paramyear *@parammonth *@paramday *@return */ privatestaticint[]addOneDay(intyear,intmonth,intday){ if(isLeapYear(year)){ day++; if(day>DAYS_P_MONTH_LY[month-1]){ month++; if(month>12){ year++; month=1; } day=1; } }else{ day++; if(day>DAYS_P_MONTH_CY[month-1]){ month++; if(month>12){ year++; month=1; } day=1; } } int[]ymd={year,month,day}; returnymd; } /** *将不足两位的月份或日期补足为两位 *@paramdecimal *@return */ publicstaticStringformatMonthDay(intdecimal){ DecimalFormatdf=newDecimalFormat("00"); returndf.format(decimal); } /** *将不足四位的年份补足为四位 *@paramdecimal *@return */ publicstaticStringformatYear(intdecimal){ DecimalFormatdf=newDecimalFormat("0000"); returndf.format(decimal); } /** *计算两个日期之间相隔的天数 *@parambegin *@paramend *@return *@throwsParseException */ publicstaticlongcountDay(Stringbegin,Stringend){ SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-dd"); DatebeginDate,endDate; longday=0; try{ beginDate=format.parse(begin); endDate=format.parse(end); day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000); }catch(ParseExceptione){ e.printStackTrace(); } returnday; } /** *以循环的方式计算日期 *@parambeginDateendDate *@paramdays *@return */ publicstaticList<String>getEveryday(StringbeginDate,StringendDate){ longdays=countDay(beginDate,endDate); int[]ymd=splitYMD(beginDate); List<String>everyDays=newArrayList<String>(); everyDays.add(beginDate); for(inti=0;i<days;i++){ ymd=addOneDay(ymd[Y],ymd[M],ymd[D]); everyDays.add(formatYear(ymd[Y])+"-"+formatMonthDay(ymd[M])+"-"+formatMonthDay(ymd[D])); } returneveryDays; } publicstaticvoidmain(String[]args){ List<String>list=AccountDate.getEveryday("2008-08-29","2008-09-02"); for(Stringresult:list){ System.out.println(result); } } }
希望本文所述对大家的java程序设计有所帮助。