今天突然想着自己一年总共工作多少天,休息多少天,想手工算一算觉得麻烦,还是写个程序算一算好了。下面是代码:
import java.util.ArrayList; import java.util.Calendar; import java.util.List; public class JobTime { int year; int month; int day; public JobTime(int year){ this.year=year; } public JobTime(int year,int month,int day){ this.year=year; this.month=month-1; this.day=day; } /* 法定休息日 * 一、元旦:2012年1月1日至3日放假调休,共3天。2011年12月31日(星期六)上班。 二、春节:1月22日至28日放假调休,共7天。1月21日(星期六)、1月29日(星期日)上班。 三、清明节:4月2日至4日放假调休,共3天。3月31日(星期六)、4月1日(星期日)上班。 四、劳动节:4月29日至5月1日放假调休,共3天。4月28日(星期六)上班。 五、端午节:6月22日至24日放假公休,共3天。 六、中秋节、国庆节:9月30日至10月7日放假调休,共8天。9月29日(星期六)上班。 */ public List<Calendar> getWorkWeekDay(){ //周末工作的情况 List<Calendar> list=new ArrayList<Calendar>(); Calendar cr=Calendar.getInstance(); cr.set(year, 0, 21); list.add(cr); Calendar cr1=Calendar.getInstance(); cr1.set(year, 0, 29); list.add(cr1); Calendar cr2=Calendar.getInstance(); cr2.set(year, 2, 31); list.add(cr2); Calendar cr3=Calendar.getInstance(); cr3.set(year, 3, 1); list.add(cr3); Calendar cr4=Calendar.getInstance(); cr4.set(year, 3, 28); list.add(cr4); Calendar cr5=Calendar.getInstance(); cr5.set(year, 8, 29); list.add(cr5); return list; } public List<Calendar> getDiesnon(){ //法定节假日休的的天数放在集合中 List<Calendar> list=new ArrayList<Calendar>(); //元旦 Calendar cr=Calendar.getInstance(); cr.set(year, 0, 1); list.add(cr); Calendar cr1=Calendar.getInstance(); cr1.set(year, 0, 2); list.add(cr1); Calendar cr2=Calendar.getInstance(); cr2.set(year, 0,3); list.add(cr2); //春节 Calendar cr3=Calendar.getInstance(); cr1.set(year, 0, 22); list.add(cr3); Calendar cr4=Calendar.getInstance(); cr1.set(year, 0, 23); list.add(cr4); Calendar cr5=Calendar.getInstance(); cr5.set(year, 0, 24); list.add(cr5); Calendar cr6=Calendar.getInstance(); cr6.set(year, 0, 25); list.add(cr6); Calendar cr7=Calendar.getInstance(); cr7.set(year, 0, 26); list.add(cr7); Calendar cr8=Calendar.getInstance(); cr8.set(year, 0, 27); list.add(cr8); Calendar cr9=Calendar.getInstance(); cr9.set(year, 0, 28); list.add(cr9); //清明节 Calendar cr10=Calendar.getInstance(); cr10.set(year, 3, 2); list.add(cr10); Calendar cr11=Calendar.getInstance(); cr11.set(year, 3, 3); list.add(cr11); Calendar cr12=Calendar.getInstance(); cr12.set(year, 3, 4); list.add(cr12); //劳动节 Calendar cr13=Calendar.getInstance(); cr13.set(year, 3, 29); list.add(cr13); Calendar cr14=Calendar.getInstance(); cr14.set(year, 3, 30); list.add(cr14); Calendar cr15=Calendar.getInstance(); cr15.set(year, 4, 1); list.add(cr15); //端午节 Calendar cr16=Calendar.getInstance(); cr16.set(year, 5, 22); list.add(cr16); Calendar cr17=Calendar.getInstance(); cr17.set(year, 5, 23); list.add(cr17); Calendar cr18=Calendar.getInstance(); cr18.set(year, 5, 24); list.add(cr18); //中秋节国庆节 Calendar cr19=Calendar.getInstance(); cr19.set(year,8, 30); list.add(cr19); Calendar cr20=Calendar.getInstance(); cr20.set(year,9,1); list.add(cr20); Calendar cr21=Calendar.getInstance(); cr21.set(year,9,2); list.add(cr21); Calendar cr22=Calendar.getInstance(); cr22.set(year,9,3); list.add(cr22); Calendar cr23=Calendar.getInstance(); cr23.set(year,9,4); list.add(cr23); Calendar cr24=Calendar.getInstance(); cr24.set(year,9,5); list.add(cr24); Calendar cr25=Calendar.getInstance(); cr25.set(year,9,6); list.add(cr25); Calendar cr26=Calendar.getInstance(); cr26.set(year,9,7); list.add(cr26); return list; } public int[] getDays(){ /*Calendar.DAY_OF_WEEK的范围是1-7. * 1->星期日 * 2->星期一 * 3->星期二 * 4->星期三 * 5->星期四 * 6->星期五 * 7->星期六 * */ /*Calendar.MONTH的范围是0-11; * 0->一月 * 1->二月 * 2->三月 * 3->四月 * 4->五月 * 5->六月 * 6->七月 * 7->八月 * 8->九月 * 9->十月 * 10->十一月 * 11->十二月 * */ //休息的天数 int freeDay=0; //工作的天数 int workDay=0; List<Calendar> listDiesnon=getDiesnon(); List<Calendar> listWorkWeekDays=getWorkWeekDay(); Calendar cldr=Calendar.getInstance(); for(int i=0;i<12;i++){ int days=getDaysOfMonth(i+1); for(int j=1;j<=days;j++){ cldr.set(year,i,j); if(listDiesnon.contains(cldr)){ System.out.println("法定假日"); freeDay++; }else if(listWorkWeekDays.contains(cldr)){ System.out.println("周末工作"); workDay++; }else{ int dayOfWeek=cldr.get(Calendar.DAY_OF_WEEK ); //周末休息 if(dayOfWeek==1||dayOfWeek==7){ freeDay+=1; }else{ workDay+=1; } } } } return new int[]{freeDay,workDay}; } //获得休息的天数 public int getFreeDaysInYear(){ return getDays()[0]; } //获得工作的天数 public int getWorkDaysInYear(){ return getDays()[1]; } //先判断是否闰年 public boolean isLeapYear(){ boolean flag=false; if(year%4==0&&year%100!=0||year%400==0){ flag=true; } return flag; } //获得每一个月的天数 public int getDaysOfMonth(int month){ int days=0; if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){ days=31; }else if(month==2){ days=28; if(isLeapYear()) days=days+1; }else{ days=30; } return days; } public static void main(String[] args){ JobTime jt=new JobTime(2012); int wd=jt.getWorkDaysInYear(); int fd=jt.getFreeDaysInYear(); System.out.println("2012年我们工作:"+wd+" 天"); System.out.println("2012年我们休息:"+fd+" 天"); } }