packagecom.jw.magicbpm.util;
importjava.text.DateFormat;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;
importjava.util.Locale;
importjava.util.StringTokenizer;
importjava.util.GregorianCalendar;
/
@authorAdministrator
/
publicclassDateTools{
publicDateTools(){
}
/
取得系统时间
@paramKind
返回值的类型1:yyyyMMdd2:yyyy/MM/dd3:hhmmss4:hh:mm:ss
5:yyyyMMddhhmmss6:yyyy/MM/ddhh:mm:ss7:
yyyy/MM/dd|hh:mm:ss8:yyyyMMddhhmmss9:yyyy-MM-dd10:
yyyy-MM-ddhh:mm:ss11:yyyy年MM月dd日12:yyyy13:MMdd
@return系统时间
@throwsException
异常
/
publicstaticStringgetServerDateTime(intKind){
SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
DatecurrentTime=newjava.util.Date();
StringstrDate=formatter.format(currentTime);
StringTokenizertoken=newStringTokenizer(strDate,"-");
Stringyear=token.nextToken();
Stringmonth=token.nextToken();
Stringday=token.nextToken();
Stringhh=token.nextToken();
Stringmm=token.nextToken();
Stringss=token.nextToken();
StringstrServerDateTime="";
switch(Kind){
case1:
strServerDateTime=year+month+day;
break;
case2:
strServerDateTime=year+"/"+month+"/"+day;
break;
case3:
strServerDateTime=hh+mm+ss;
break;
case4:
strServerDateTime=hh+":"+mm+":"+ss;
break;
case5:
strServerDateTime=year+month+day+""+hh+mm+ss;
break;
case6:
strServerDateTime=year+"/"+month+"/"+day+""+hh+":"
+mm+":"+ss;
break;
case7:
strServerDateTime=year+"/"+month+"/"+day+"|"+hh+":"
+mm+":"+ss;
break;
case8:
strServerDateTime=year+month+day+hh+mm+ss;
break;
case9:
strServerDateTime=year+"-"+month+"-"+day;
break;
case10:
strServerDateTime=year+"-"+month+"-"+day+""+hh+":"
+mm+":"+ss;
break;
case11:
strServerDateTime=year+"年"+month+"月"+day+"日";
break;
case12:
strServerDateTime=year;
break;
case13:
strServerDateTime=month+day;
break;
case14:
strServerDateTime=hh;
break;
case15:
strServerDateTime=year+month;
break;
case16:
strServerDateTime=hh+":"+mm;
break;
default:
break;
}
returnstrServerDateTime;
}
/
取得某个日期段的开始日期
@paramKind
返回值的类型1:今天2:昨天3:明天4:本周5:上周6:下周7:本月8:上月9:下月
@return开始日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetDateFrom(intkind){
if(kind==1){//今天
returngetTodayFrom();
}
if(kind==2){//昨天
returngetYestodayFrom();
}
if(kind==3){//明天
returngetNextdayFrom();
}
if(kind==4){//本周
returngetWeekFrom();
}
if(kind==5){//上周
returngetPreWeekFrom();
}
if(kind==6){//下周
returngetNextWeekFrom();
}
if(kind==7){//本月
returngetMonthFrom();
}
if(kind==8){//上月
returngetPreMonthFrom();
}
if(kind==9){//下月
returngetNextMonthFrom();
}
return"";
}
/
取得某个日期段的结束日期
@paramKind
返回值的类型1:今天2:昨天3:明天4:本周5:上周6:下周7:本月8:上月9:下月
@return结束日期格式:yyyy-MM-dd"23:59:59"
/
publicstaticStringgetDateTo(intkind){
if(kind==1){//今天
returngetTodayTo();
}
if(kind==2){//昨天
returngetYestodayTo();
}
if(kind==3){//明天
returngetNextdayTo();
}
if(kind==4){//本周
returngetWeekTo();
}
if(kind==5){//上周
returngetPreWeekTo();
}
if(kind==6){//下周
returngetNextWeekTo();
}
if(kind==7){//本月
returngetMonthTo();
}
if(kind==8){//上月
returngetPreMonthTo();
}
if(kind==9){//下月
returngetNextMonthTo();
}
return"";
}
/
根据传进的日期,以及X得到X天后的日期
@return日期格式:yyyy-MM-dd
/
publicstaticStringgetAfterDate(Stringdate,intseveral)throwsException
{
//Datenow=newDate();
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
//System.out.println("NowDateis-->"+sdf.format(now));
Calendarcal=Calendar.getInstance();
cal.setTime(sdf.parse(date));
longdays=several;
longtimeone=cal.getTimeInMillis();
longresult=timeone+days2460601000;
DategetDate=newDate(result);
//System.out.println("resulttime-->"+sdf.format(getDate));
returnsdf.format(getDate).toString();
}
/
取得上个月的开始日期
@return开始日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetPreMonthFrom(){
StringLast="00:00:00";
GregorianCalendarcal=newGregorianCalendar();
cal.add(GregorianCalendar.MONTH,-1);
intdayofmonth=cal.get(GregorianCalendar.DAY_OF_MONTH);
cal.add(GregorianCalendar.DAY_OF_YEAR,1-dayofmonth);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得下个月的开始日期
@return开始日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetNextMonthFrom(){
StringLast="00:00:00";
GregorianCalendarcal=newGregorianCalendar();
cal.add(GregorianCalendar.MONTH,+1);
intdayofmonth=cal.get(GregorianCalendar.DAY_OF_MONTH);
cal.add(GregorianCalendar.DAY_OF_YEAR,1-dayofmonth);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得上个月的结束日期
@return结束日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetPreMonthTo(){
StringLast="23:59:59";
GregorianCalendarcal=newGregorianCalendar();
intdayofmonth=cal.get(GregorianCalendar.DAY_OF_MONTH);
cal.add(GregorianCalendar.DAY_OF_YEAR,1-dayofmonth-1);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得下个月的结束日期
@return结束日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetNextMonthTo(){
StringLast="23:59:59";
GregorianCalendarcal=newGregorianCalendar();
cal.add(GregorianCalendar.MONTH,+2);
intdayofmonth=cal.get(GregorianCalendar.DAY_OF_MONTH);
cal.add(GregorianCalendar.DAY_OF_YEAR,1-dayofmonth-1);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得本月的开始日期
@return开始日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetMonthFrom(){
StringLast="00:00:00";
GregorianCalendarcal=newGregorianCalendar();
intdayofmonth=cal.get(GregorianCalendar.DAY_OF_MONTH);
cal.add(GregorianCalendar.DAY_OF_YEAR,1-dayofmonth);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得本月的结束日期
@return结束日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetMonthTo(){
StringLast="23:59:59";
GregorianCalendarcal=newGregorianCalendar();
cal.add(GregorianCalendar.MONTH,1);
intdayofmonth=cal.get(GregorianCalendar.DAY_OF_MONTH);
cal.add(GregorianCalendar.DAY_OF_YEAR,1-dayofmonth-1);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得上周的开始日期
@return开始日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetPreWeekFrom(){
//0=Sunday,1=Monday,2=Tuesday,3=Wednesday,4=Thursday,5=
//Friday,6=Saturday
StringLast="00:00:00";
GregorianCalendarcal=newGregorianCalendar();
intdayofweek=cal.get(GregorianCalendar.DAY_OF_WEEK);
if(dayofweek==GregorianCalendar.SUNDAY){
dayofweek=GregorianCalendar.SUNDAY+7;
}
cal.add(GregorianCalendar.DAY_OF_YEAR,GregorianCalendar.MONDAY
-dayofweek-7);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得上周的结束日期
@return结束日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetPreWeekTo(){
//0=Sunday,1=Monday,2=Tuesday,3=Wednesday,4=Thursday,5=
//Friday,6=Saturday
StringLast="23:59:59";
GregorianCalendarcal=newGregorianCalendar();
intdayofweek=cal.get(GregorianCalendar.DAY_OF_WEEK);
if(dayofweek==GregorianCalendar.SUNDAY){
dayofweek=GregorianCalendar.SUNDAY+7;
}
cal.add(GregorianCalendar.DAY_OF_YEAR,GregorianCalendar.MONDAY
-dayofweek+6-7);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得本周的开始日期
@return开始日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetWeekTo(){
//0=Sunday,1=Monday,2=Tuesday,3=Wednesday,4=Thursday,5=
//Friday,6=Saturday
StringLast="23:59:59";
GregorianCalendarcal=newGregorianCalendar();
intdayofweek=cal.get(GregorianCalendar.DAY_OF_WEEK);
if(dayofweek==GregorianCalendar.SUNDAY){
dayofweek=GregorianCalendar.SUNDAY+7;
}
cal.add(GregorianCalendar.DAY_OF_YEAR,GregorianCalendar.MONDAY
-dayofweek+6);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得本周的结束日期
@return结束日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetWeekFrom(){
//0=Sunday,1=Monday,2=Tuesday,3=Wednesday,4=Thursday,5=
//Friday,6=Saturday
StringLast="00:00:00";
GregorianCalendarcal=newGregorianCalendar();
intdayofweek=cal.get(GregorianCalendar.DAY_OF_WEEK);
if(dayofweek==GregorianCalendar.SUNDAY){
dayofweek=GregorianCalendar.SUNDAY+7;
}
cal.add(GregorianCalendar.DAY_OF_YEAR,GregorianCalendar.MONDAY
-dayofweek);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得下周的开始日期
@return开始日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetNextWeekFrom(){
//0=Sunday,1=Monday,2=Tuesday,3=Wednesday,4=Thursday,5=
//Friday,6=Saturday
StringLast="00:00:00";
GregorianCalendarcal=newGregorianCalendar();
intdayofweek=cal.get(GregorianCalendar.DAY_OF_WEEK);
if(dayofweek==GregorianCalendar.SUNDAY){
dayofweek=GregorianCalendar.SUNDAY+7;
}
cal.add(GregorianCalendar.DAY_OF_YEAR,GregorianCalendar.MONDAY
-dayofweek+7);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得上周的结束日期
@return结束日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetNextWeekTo(){
//0=Sunday,1=Monday,2=Tuesday,3=Wednesday,4=Thursday,5=
//Friday,6=Saturday
StringLast="23:59:59";
GregorianCalendarcal=newGregorianCalendar();
intdayofweek=cal.get(GregorianCalendar.DAY_OF_WEEK);
if(dayofweek==GregorianCalendar.SUNDAY){
dayofweek=GregorianCalendar.SUNDAY+7;
}
cal.add(GregorianCalendar.DAY_OF_YEAR,GregorianCalendar.MONDAY
-dayofweek+6+7);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得昨天的开始日期
@return开始日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetYestodayFrom(){
StringLast="00:00:00";
GregorianCalendarcal=newGregorianCalendar();
cal.add(GregorianCalendar.DAY_OF_YEAR,-1);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得昨天的结束日期
@return结束日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetYestodayTo(){
StringLast="23:59:59";
GregorianCalendarcal=newGregorianCalendar();
cal.add(GregorianCalendar.DAY_OF_YEAR,-1);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得今天的开始日期
@return开始日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetTodayFrom(){
StringLast="00:00:00";
Stringnow=newSimpleDateFormat("yyyy-MM-dd")
.format(newjava.util.Date());
returnnow+""+Last;
}
/
取得今天的结束日期
@return结束日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetTodayTo(){
StringLast="23:59:59";
Stringnow=newSimpleDateFormat("yyyy-MM-dd")
.format(newjava.util.Date());
returnnow+""+Last;
}
/
取得明天的开始日期
@return开始日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetNextdayFrom(){
StringLast="00:00:00";
GregorianCalendarcal=newGregorianCalendar();
cal.add(GregorianCalendar.DAY_OF_YEAR,+1);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得昨天的结束日期
@return结束日期格式:yyyy-MM-dd00:00:00
/
publicstaticStringgetNextdayTo(){
StringLast="23:59:59";
GregorianCalendarcal=newGregorianCalendar();
cal.add(GregorianCalendar.DAY_OF_YEAR,+1);
returnnewSimpleDateFormat("yyyy-MM-dd").format(cal.getTime())+""
+Last;
}
/
取得2个时间点之间的时间间隔,单位为分
@paramstratTime
开始时间格式必须为"HH:MM"
@paramendTime
结束时间格式必须为"HH:MM"
@return间隔的分钟数
/
publicstaticStringgetTwoHour(StringstratTime,StringendTime){
String[]kk=null;
String[]jj=null;
kk=stratTime.split(":");
jj=endTime.split(":");
if(Integer.parseInt(kk[0]) return"0";
else{
doubley=Double.parseDouble(kk[0])+Double.parseDouble(kk[1])
/60;
doubleu=Double.parseDouble(jj[0])+Double.parseDouble(jj[1])
/60;
if((y-u)>0)
returny-u+"";
else
return"0";
}
}
/
取得2个日期点之间的日期间隔,单位为天
@paramstratDate
开始日期
@paramendDate
结束日期
@return间隔的天数
/
publicstaticStringgetTwoDay(StringstratDate,StringendDate){
SimpleDateFormatmyFormatter=newSimpleDateFormat("yyyy-MM-dd");
longday=0;
try{
java.util.Datedate=myFormatter.parse(stratDate);
java.util.Datemydate=myFormatter.parse(endDate);
day=(date.getTime()-mydate.getTime())/(2460601000);
}catch(Exceptione){
return"";
}
returnday+"";
}
/
判断是否为闰年
@paramdateValue
需要判断的日期
@returntrue:是闰年false:不是闰年
@throwsParseException
/
publicstaticbooleanisLeapYear(StringdateValue)throwsParseException{
/
详细设计:1.被400整除是闰年,否则:2.不能被4整除则不是闰年3.能被4整除同时不能被100整除则是闰年
4.能被4整除同时能被100整除则不是闰年
/
Dated=strToDate(dateValue);
GregorianCalendargc=(GregorianCalendar)Calendar.getInstance();
gc.setTime(d);
intyear=gc.get(Calendar.YEAR);
if((year%400)==0)
returntrue;
elseif((year%4)==0){
if((year%100)==0)
returnfalse;
else
returntrue;
}else
returnfalse;
}
/
将字符型的日期转化为日期型的日期
@paramdateValue
将要转化的字符串
@return日期型的日期
@throwsParseException
/
publicstaticDatestrToDate(StringdateValue)throwsParseException{
DateFormatformat=newSimpleDateFormat("yyyy-MM-dd");
returnformat.parse(dateValue);
}
/
判断2个日期是否在同一个星期
@paramdateOne
日期1
@paramdateTwo
日期2
@returntrue:在同一个星期false:不在同一个星期
/
publicstaticbooleanisSameWeekDates(DatedateOne,DatedateTwo){
Calendarcal1=Calendar.getInstance();
Calendarcal2=Calendar.getInstance();
cal1.setTime(dateOne);
cal2.setTime(dateTwo);
intsubYear=cal1.get(Calendar.YEAR)-cal2.get(Calendar.YEAR);
if(0==subYear){
if(cal1.get(Calendar.WEEK_OF_YEAR)==cal2
.get(Calendar.WEEK_OF_YEAR))
returntrue;
}elseif(1==subYear&&11==cal2.get(Calendar.MONTH)){
//如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周
if(cal1.get(Calendar.WEEK_OF_YEAR)==cal2
.get(Calendar.WEEK_OF_YEAR))
returntrue;
}elseif(-1==subYear&&11==cal1.get(Calendar.MONTH)){
if(cal1.get(Calendar.WEEK_OF_YEAR)==cal2
.get(Calendar.WEEK_OF_YEAR))
returntrue;
}
returnfalse;
}
/
取得日期为所在年度的第几周
@paramdateValue
需要判断的日期
@return年度+周数
@throwsParseException
/
publicstaticStringgetSeqWeek(StringdateValue)throwsParseException{
Calendarc=Calendar.getInstance();
c.setTime(strToDate(dateValue));
Stringweek=Integer.toString(c.get(Calendar.WEEK_OF_YEAR));
if(week.length()==1)
week="0"+week;
Stringyear=Integer.toString(c.get(Calendar.YEAR));
returnyear+week;
}
/
获得一个日期所在的周的星期几的日期,如要找出2011年2月3日所在周的星期一是几号
@paramdateValue
日期
@paramnumWeek
所在的周的星期几
@return日期格式:"yyyy-MM-dd"
@throwsParseException
/
publicstaticStringgetWeek(StringdateValue,StringnumWeek)
throwsParseException{
//再转换为时间
Datedd=strToDate(dateValue);
Calendarc=Calendar.getInstance();
c.setTime(dd);
if(numWeek.equals("1"))//返回星期一所在的日期
c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
elseif(numWeek.equals("2"))//返回星期二所在的日期
c.set(Calendar.DAY_OF_WEEK,Calendar.TUESDAY);
elseif(numWeek.equals("3"))//返回星期三所在的日期
c.set(Calendar.DAY_OF_WEEK,Calendar.WEDNESDAY);
elseif(numWeek.equals("4"))//返回星期四所在的日期
c.set(Calendar.DAY_OF_WEEK,Calendar.THURSDAY);
elseif(numWeek.equals("5"))//返回星期五所在的日期
c.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);
elseif(numWeek.equals("6"))//返回星期六所在的日期
c.set(Calendar.DAY_OF_WEEK,Calendar.SATURDAY);
elseif(numWeek.equals("0"))//返回星期日所在的日期
c.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);
returnnewSimpleDateFormat("yyyy-MM-dd").format(c.getTime());
}
/
根据一个日期,返回数字的星期几
@paramdateValue
日期
@return数字的星期几1=星期日7=星期六,其他类推
@throwsParseException
/
publicstaticStringgetWeek(StringdateValue)throwsParseException{
//再转换为时间
Datedate=strToDate(dateValue);
Calendarc=Calendar.getInstance();
c.setTime(date);
//inthour=c.get(Calendar.DAY_OF_WEEK);
//hour中存的就是星期几了,其范围1~7
//1=星期日7=星期六,其他类推
returnnewSimpleDateFormat("EEEE").format(c.getTime());
}
/
根据一个日期,返回是星期几
@paramdateValue
日期
@return中文字符型的星期几
@throwsParseException
/
publicstaticStringgetWeekStr(Stringsdate)throwsParseException{
Stringstr="";
str=getWeek(sdate);
if("1".equals(str)){
str="星期日";
}elseif("2".equals(str)){
str="星期一";
}elseif("3".equals(str)){
str="星期二";
}elseif("4".equals(str)){
str="星期三";
}elseif("5".equals(str)){
str="星期四";
}elseif("6".equals(str)){
str="星期五";
}elseif("7".equals(str)){
str="星期六";
}
returnstr;
}
publicstaticStringDateTostr(DatedateValue,intKind)throwsParseException{
SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
StringstrDate=formatter.format(dateValue);
StringTokenizertoken=newStringTokenizer(strDate,"-");
Stringyear=token.nextToken();
Stringmonth=token.nextToken();
Stringday=token.nextToken();
Stringhh=token.nextToken();
Stringmm=token.nextToken();
Stringss=token.nextToken();
StringstrServerDateTime="";
switch(Kind){
case1:
strServerDateTime=year+month+day;
break;
case2:
strServerDateTime=year+"/"+month+"/"+day;
break;
case3:
strServerDateTime=hh+mm+ss;
break;
case4:
strServerDateTime=hh+":"+mm+":"+ss;
break;
case5:
strServerDateTime=year+month+day+""+hh+mm+ss;
break;
case6:
strServerDateTime=year+"/"+month+"/"+day+""+hh+":"
+mm+":"+ss;
break;
case7:
strServerDateTime=year+"/"+month+"/"+day+"|"+hh+":"
+mm+":"+ss;
break;
case8:
strServerDateTime=year+month+day+hh+mm+ss;
break;
case9:
strServerDateTime=year+"-"+month+"-"+day;
break;
case10:
strServerDateTime=year+"-"+month+"-"+day+""+hh+":"
+mm+":"+ss;
break;
case11:
strServerDateTime=year+"年"+month+"月"+day+"日";
break;
case12:
strServerDateTime=year;
break;
case13:
strServerDateTime=month+day;
break;
case14:
strServerDateTime=hh;
break;
case15:
strServerDateTime=year+month;
break;
default:
break;
}
returnstrServerDateTime;
}
}
|
|