/**
* 计算节假日当天,放假/加班的情况
* 下面注释以元旦,春节为例
* @param day 输入的时期一定时节假日当天且为第一天
* @return {'2018-01-01':1 , '2018-01-02': 0 } // 1 :放假,0:加班
*/
public static JSONObject calcHolidays(Date day , Integer type){//type = 1 春节,国庆 ; 2 除夕;3 其他
Calendar thatcal = Calendar.getInstance();
thatcal.setTime(day);
JSONObject result = new JSONObject();
//春节往前调一天
if(type == 1 && thatcal.get(Calendar.MONTH) < 6){
thatcal.add(Calendar.DATE , -1);//春节前调的除夕不添加
}else{
result.put(SimpleUtil.dfDay(thatcal.getTime()) , 1);//当天一定放假
}
switch(thatcal.get(Calendar.DAY_OF_WEEK)){
// 周一 周二 周三 周四 周五 周六 周日 // 周一 周二 周三 周四 周五 周六 周日
// 26 27 28 29 30 31(假) 1(假) // 25 26 27 28 29 30(班) 31(除夕)
// 2(假) 3 4 5 6 7 8 // 1(假) 2(假) 3(假) 4(假) 5(假) 6(假) 7(班)
case 1 : //周日
if(type == 1){
for(int i = 0 ; i < 6 ; i++){
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
}
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
thatcal.add(Calendar.DATE, -8);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
}else if(type == 3) {
thatcal.add(Calendar.DATE, -1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
thatcal.add(Calendar.DATE, 2);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
}
break;
// 周一 周二 周三 周四 周五 周六 周日 // 周一 周二 周三 周四 周五 周六 周日
// 25 26 27 28 29 30(假) 31(假) // 24 25 26 27 28 29(班) 30(班))
// 1(假) 2 3 4 5 6 7 // 31(除夕)1(假) 2(假) 3(假) 4(假) 5(假) 6(假)
case 2 : //周一
if(type == 1){
for(int i = 0 ; i < 6 ; i++){
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
}
thatcal.add(Calendar.DATE, -8);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
}else if(type == 3) {
thatcal.add(Calendar.DATE, -1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
thatcal.add(Calendar.DATE, -1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
}
break;
// 周一 周二 周三 周四 周五 周六 周日 // 周一 周二 周三 周四 周五 周六 周日
// 24 25 26 27 28 29(班) 30(假) // 30 31(除夕)1(假) 2(假) 3(假) 4(假) 5(假) <- 29(班)
// 31(假) 1(假) 2 3 4 5 6 // 6(假) 7 8 9 10 11(班) 12
case 3: //周二
if(type == 1){
for(int i = 0 ; i < 6 ; i++){
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
}
thatcal.add(Calendar.DATE, -8);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
thatcal.add(Calendar.DATE, 13);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
}else if(type == 3) {
thatcal.add(Calendar.DATE, -1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
thatcal.add(Calendar.DATE, -1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
thatcal.add(Calendar.DATE, -1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
}
break;
// 周一 周二 周三 周四 周五 周六 周日 // 周一 周二 周三 周四 周五 周六 周日
// 23 24 25 26 27 28(班) 29(班) // 29 30 31(除夕)1(假) 2(假) 3(假) 4(假) <- 28(班)
// 30(假) 31(假) 1(假) 2 3 4 5 // 5(假) 6(假) 7 8 9 10(班) 11
case 4 : //周三
if(type == 1){
for(int i = 0 ; i < 6 ; i++){
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
}
thatcal.add(Calendar.DATE, -9);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
thatcal.add(Calendar.DATE, 13);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
}else if(type == 3) {
thatcal.add(Calendar.DATE, -1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
thatcal.add(Calendar.DATE, -1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
thatcal.add(Calendar.DATE, -1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
thatcal.add(Calendar.DATE, -1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
}
break;
// 周一 周二 周三 周四 周五 周六 周日 // 周一 周二 周三 周四 周五 周六 周日
// 29 30 31 1(假) 2(假) 3(假) 4(班) // 28 29 30 31(除夕)1(假) 2(假) 3(假) <- 27(班)
// 5 6 7 8 9 10 11 // 4(假) 5(假) 6(假) 7 8 9(班) 10
case 5 : //周四
if(type == 1){
for(int i = 0 ; i < 6 ; i++){
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
}
thatcal.add(Calendar.DATE, -10);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
thatcal.add(Calendar.DATE, 13);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
}else if(type == 3) {
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
}
break;
// 周一 周二 周三 周四 周五 周六 周日 // 周一 周二 周三 周四 周五 周六 周日
// 28 29 30 31 1(假) 2(假) 3(假) // 27 28 29 30 31(除夕)1(假) 2(假) <- 26(班)
// 4 5 6 7 8 9 10 // 3(假) 4(假) 5(假) 6(假) 7 8(班) 9
case 6 : //周五
if(type == 1){
for(int i = 0 ; i < 6 ; i++){
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
}
thatcal.add(Calendar.DATE, -11);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
thatcal.add(Calendar.DATE, 13);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
}else if(type == 3) {
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
}
break;
// 周一 周二 周三 周四 周五 周六 周日 // 周一 周二 周三 周四 周五 周六 周日
// 27 28 29 30 31(假) 1(假) 2(假) // 26 27 28 29 30 31(除夕)1(假)
// 3 4 5 6 7 8 9 // 2(假) 3(假) 4(假) 5(假) 6(假) 7(班) 8(班)
case 7 : // 周六
if(type == 1){
for(int i = 0 ; i < 6 ; i++){
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
}
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
}else if(type == 3) {
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
thatcal.add(Calendar.DATE, 1);
result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
}
break;
}
return result;
}
获取国庆放假加班信息(记录)
猜你喜欢
转载自blog.csdn.net/qq_28114645/article/details/80695107
今日推荐
周排行