java Android 算一定業務規定的工作日(除去法定節假日、調休週末上班日)代碼copy直接用

package com.susan.test;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;


/**
 * 計算 特定 規則的 工作日 (可以根據具體業務規則修改得到工作日)
 * 
 * @author susan
 *
 */
public class CalculateSpecificWorkDateUtil {


private static final String TAG = CalculateSpecificWorkDateUtil.class
.getName();
private static CalculateSpecificWorkDateUtil cswdu = null;


private CalculateSpecificWorkDateUtil() {


}


public static CalculateSpecificWorkDateUtil getInstance() {
if (cswdu == null) {
cswdu = new CalculateSpecificWorkDateUtil();
}
return cswdu;
}

    /** 
     * @title 獲取週六和週日是工作日的情況(手工維護) 
     *    注意,日期必須寫全: 
     *       2015-1-4必須寫成:2015-01-04 
     * @author 
     * @return 週末是工作日的列表 
     */  
    private List<String> getWeekendIsWorkDateList(){  
        List<String> list = new ArrayList<String>();  
        list.add("2015-09-06");  
        list.add("2015-10-10");  
        return list;  
    }  
      
    /** 
     * @title 獲取週一到週五是假期的情況(手工維護) 
     *    注意,日期必須寫全: 
     *       2009-1-4必須寫成:2009-01-04 
     * @author
     * @return 平時是假期的列表 
     */  
    private List<String> getWeekdayIsHolidayList(){  
        List<String> list = new ArrayList<String>();  
        list.add("2015-09-03");  
        list.add("2015-09-04"); 
        list.add("2015-10-01");  
        list.add("2015-10-02");  
        list.add("2015-10-05");  
        list.add("2015-10-06");  
        list.add("2015-10-07");  
        list.add("2016-01-01");  
        return list;  
    }  


/** 
    * @title 判斷是否爲工作日 
    * @detail 工作日計算: 
    *           1、正常工作日,並且爲非假期 
    *           2、週末被調整成工作日 
    * @author  
    * @param date 日期 
    * @return 是工作日返回true,非工作日返回false 
    */  
   public boolean isWorkDay(Calendar calendar){  
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
       if (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY  
               && calendar.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY){  
           //平時  
           return !getWeekdayIsHolidayList().contains(sdf.format(calendar.getTime()));  
       }else{  
           //週末  
           return getWeekendIsWorkDateList().contains(sdf.format(calendar.getTime()));  
       }  
   }  
   
   
   ////////////////////////////********業務規則******//////////////////////////////////////////




//業務規則  獲得第二個 工作日
public  String  getSpecWorkDate(String strDate){
String workDay = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = null;
try {
d = sdf.parse(strDate);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Calendar cal = Calendar.getInstance();
cal.setTime(d);
//傳進來的日期 往後加一天
cal.add(Calendar.DAY_OF_YEAR, 1);
int workDayFlag = 0;
for (int i = 0; i < 15; i++) {
if (isWorkDay(cal) && workDayFlag<2) {
Date time = cal.getTime();
if (workDayFlag == 1) {
workDay = sdf.format(time);
//System.out.println("輸出第二個工作日:" + workDay);
break;
}
workDayFlag++;
}
cal.add(Calendar.DAY_OF_YEAR, 1);
}
return workDay;
}
     
// ////////////////////////////********業務規則******//////////////////////////////////////////


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章