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程序设计有所帮助。