2012年,你工作做少天休息多少天

今天突然想着自己一年总共工作多少天,休息多少天,想手工算一算觉得麻烦,还是写个程序算一算好了。下面是代码:

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+" 天");	
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值