?? checdate.java
字號:
package checdateapi;import java.util.StringTokenizer;public class CHECDate { public final static int FLAG_YEAR=6; public final static int FLAG_MONTH=5; public final static int FLAG_DAY=4; int year; int month; int day; public CHECDate() { year=0; month=0; day=0; } public CHECDate(int h,int m,int s) { year=h; month=m; day=s; } public void setYear(int y){ year=y; } public int getYear(){ return year; } public void setMonth(int m){ month=m; } public int getMonth(){ return month; } public void setDay(int d){ day=d; } public int getDay(){ return day; } public String toString(){ String rtString; if (year<10) { rtString="0"+Integer.toString(year); } else{ rtString=Integer.toString(year); } if (month<10) { rtString=rtString+"-0"+ Integer.toString(month); } else{ rtString=rtString+"-" + Integer.toString(month); } if (day<10) { rtString=rtString+"-0"+ Integer.toString(day); } else{ rtString=rtString+"-" + Integer.toString(day); } return rtString; } public void setDate(int y,int m,int d){ year=y; month=m; day=d; } public void setDate(String strTime){ strTime.trim(); if(strTime.length()>7 & strTime.length()<11) { StringTokenizer st = new StringTokenizer(strTime.trim(),"-"); String []str=new String[4]; int count=0; while (st.hasMoreTokens()) { if(count>2) break; str[count]=(String)st.nextElement(); count++; } if(count>1){ year=Integer.parseInt(str[0]); month=Integer.parseInt(str[1]); day=Integer.parseInt(str[2]); } } } public void setDate(CHECDate cd){ year=cd.getYear(); month=cd.getMonth(); day=cd.getDay(); } /* public boolean equal(CHECDate cd){ boolean b=false; if(year==cd.getYear() && month==cd.getMonth() && day ==cd.getDay() ) { b=true; } return b; } */ public CHECDate nextDay(){ int y=2001,m=1,d=1; if (month==12 && day==31){ y=year+1; m=1; d=1; } else if((month==1 || month==3 || month==5 || month==7 || month==8 || month==10 ) && day==31 ){ y=year; m=month+1; d=1; } else if((month==4 || month==6 || month==9 || month==11 )&& day==30 ){ y=year; m=month+1; d=1; } else if( (year %4)==0 && month==2 && day==29 ){ y=year; m=month+1; d=1; } else if( (year %4)!=0 && month==2 && day==28 ){ y=year; m=month+1; d=1; } else{ y=year; m=month; d=day+1; } CHECDate rd=new CHECDate(y,m,d); return rd; } public CHECDate beforeDay(){ int y=2001,m=1,d=1; if (month==1&& day==1){ y=year-1; m=12; d=31; } else if((month==12 || //month==3 && month==5 || month==7 || //month==8 && month==10 )&& day==1 ){ y=year; m=month-1; d=30; } else if ((month==2 || month==4 || month==6 || month==8 || month==9 || month==11 )&& day==1 ){ y=year; m=month-1; d=31; } else if( (year %4)==0 && month==3 && day==1 ){ y=year; m=month-1; d=29; } else if( (year %4)!=0 && month==3 && day==1 ){ y=year; m=month-1; d=28; } else{ y=year; m=month; d=day-1; } CHECDate rd=new CHECDate(y,m,d); return rd; } public int getMaxDays() { return getMaxDays(year,month); } public int getMaxDays(int yyyy,int mm) { int maxDays=30; if((mm==1 || //month==3 && mm==3 || mm==5 || //month==8 && mm==7 || mm==8 || mm==10 || mm==12 ) ){ maxDays=31; } else if ((//month==2 || mm==4 || mm==6 || mm==9 || mm==11 ) ){ maxDays=30; } else if( (yyyy %4)==0 && mm==2 ){ maxDays=29; } else if( (yyyy%4)!=0 && mm==2 ){ maxDays=28; }return maxDays; } /* public CHECDate nextDay(){ int y=2001,m=1,d=1; if (month==12 && day==31){ y=year+1; m=1; d=1; } else if(month==1 && month==3 && month==5 && month==7 && month==8 && month==10 && day==31 ){ y=year; m=month+1; day=1; } else if(month==4 && month==6 && month==9 && month==11 && day==30 ){ y=year; m=month+1; day=1; } else if( (year %4)==0 && month==2 && day==29 ){ y=year; m=month+1; day=1; } else if( (year %4)!=0 && month==2 && day==28 ){ y=year; m=month+1; day=1; } else{ y=year; m=month; d=day+1; } CHECDate rd=new CHECDate(y,m,d); return rd; } public CHECDate beforeDay(){ int y=2001,m=1,d=1; if (month==1&& day==1){ y=year-1; m=12; d=31; } else if(month==12 && //month==3 && month==5 && month==7 && //month==8 && month==10 && day==1 ){ y=year; m=month-1; day=30; } else if (month==2 && month==4 && month==6 && month==8 && month==9 && month==11 && day==1 ){ y=year; m=month-1; day=31; } else if( (year %4)==0 && month==3 && day==1 ){ y=year; m=month-1; day=29; } else if( (year %4)!=0 && month==3 && day==1 ){ y=year; m=month-1; day=28; } else{ y=year; m=month; d=day-1; } CHECDate rd=new CHECDate(y,m,d); return rd; } */ //操作,大于,大于等于,小于,小于等于 //public long timeAdd(int s){ //} public boolean equal(CHECDate t){ return getStamp()==t.getStamp() ? true:false; } public boolean dateUpper(CHECDate t){ return getStamp()>t.getStamp() ? true:false;}public boolean dateLower(CHECDate t){ return getStamp()<t.getStamp() ? true:false;}public boolean dateLowerEqual(CHECDate t){ return getStamp()<=t.getStamp() ? true:false;}public boolean dateUpperEqual(CHECDate t){return getStamp()>=t.getStamp() ? true:false;} /* public boolean dateUpper(CHECDate t){ if(year>t.getYear()){ return true; } else if((year==t.getYear())&(month>t.getMonth())){ return true; } else if((year==t.getYear())&(month==t.getMonth()) & (day>t.getDay())) { return true; } return false;}public boolean dateLower(CHECDate t){ if(year<t.getYear()){ return true; } else if((year==t.getYear()) & (month<t.getMonth())){ return true; } else if((year==t.getYear()) & (month==t.getMonth()) &(day<t.getDay())) { return true; } return false;}public boolean dateLowerEqual(CHECDate t){ if(dateLower(t) || equal(t)) return true; return false;}public boolean dateUpperEqual(CHECDate t){ if(dateUpper(t) || equal(t)) return true; return false;}*/public CHECDate add(long d){ CHECDate rtd=new CHECDate(year,month,day); if(d>0) { for(int i=0;i<d;i++){ rtd=rtd.nextDay(); } } else if(d<0) { for(int i=0;i<(-1)*d;i++){ rtd=rtd.beforeDay(); } } return rtd;}public CHECDate add(int flag,long d){ CHECDate rtd=new CHECDate(year,month,day); if(flag==FLAG_DAY) { if(d>0) { for(int i=0;i<d;i++){ rtd=rtd.nextDay(); } } else if(d<0) { for(int i=0;i<(-1)*d;i++){ rtd=rtd.beforeDay(); } } } else if(flag==FLAG_MONTH) { int m=rtd.getMonth(); int y=rtd.getYear(); int tm=m+(int)d; int nm=tm%12; int ny=tm/12; if(nm<=0) { nm=12; ny--; } rtd.setMonth(nm); rtd.setYear(y+ny); } else if(flag==FLAG_YEAR) { int y=rtd.getYear(); rtd.setYear(y+(int)d); } /* int tmpDay=rtd.getDay(); int maxDays=rtd.getMaxDays(rtd.getYear(),rtd.getMonth()); if(tmpDay>maxDays) rtd.setDay(maxDays);*/ return rtd;}public CHECDate diff(long d){ CHECDate rtd=new CHECDate(year,month,day); for(int i=0;i<d;i++){ rtd=rtd.beforeDay(); } return rtd;}public long diffDate(CHECDate d){ int a[]={31,28,31,30,31,30,31,31,30,31,30,31}; int b[]={31,29,31,30,31,30,31,31,30,31,30,31}; long ds=0; int y1,m1, d1; int y2,m2,d2; boolean f=false; int days=0; int mc=0; if (equal(d)) return 0; if(dateUpper(d)){ y1=year; m1=month; d1=day; y2=d.getYear(); m2=d.getMonth(); d2=d.getDay(); } else{ y2=year; m2=month; d2=day; y1=d.getYear(); m1=d.getMonth(); d1=d.getDay(); f=true; } int dy=y1-y2; if(dy>1){ for(int i=1;i<dy;i++) { int tmpy=y2+i; if((tmpy%4)==0){ days+=366; } else days+=365; } // tmpdyy=y2+1; } if(y1>y2){ mc=m1-m2+12; } else { mc=m1-m2; } for(int i=0;i<mc;i++) { int kk=i+m2; if(kk<13){ if((y2%4)==0) { days+=b[kk-1]; } else { days+=a[kk-1]; } } else { if((y1%4)==0) { days+=b[kk%13]; } else days+=a[kk%13]; } } days+=d1-d2; if(f) days*=-1; return days;}private boolean illegalMonth(){ if(month>12 & month<1) { month=1; return true; } return false;}public long getStamp(){ return (year*100+month)*100+day;}}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -