亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java通過輸入工作日數(正或負)得到具體日期或計算兩個日期之間的工作日

2019-11-11 07:47:58
字體:
來源:轉載
供稿:網友

由于工作需要:加減工作日得到具體的日期和計算兩個日期之間工作日兩種需求(當然參考了其他作者的內容,在這里自己做了重新處理):

首先手動錄入今年或最近幾年的工作日和調休日,先在Excel中錄入,格式如下(寫END為了補齊第三列,后面加載時候要用):
節假日 法定調休工作日 END
2017/1/28 END
2017/1/29 2017/1/14 END
2017/1/30 2017/1/15 END

2. 把除了表頭“節假日”“法定調休工作日”“END”的其他三列拷貝到一個新的sheet中; 3. 點擊excel中的另存為:文本文件(制表符分割)也就是.txt文件; 4. 加載生成的.txt文件; 5. 加載一次后存入static靜態代碼塊中; 6. 構建了getWorkDayNum(String dateStartStr,String dateEndStr)方法和getWorkDay(String dateStartStr,int n) 方法分別獲取兩個日期之間的工作日和距離dateStartStr有n個工作日的日期,如果n為負數則再加判斷即可,后面也寫了; 7. 具體代碼如下:(當然要在啟動的時候加載讀取txt的方法,在grails中是這樣寫的,如HolidayWorkdayUtil.initialize(grailsapplication.config.workday.holiday.file as String)

import java.io.File;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;import java.util.Scanner;import java.util.regex.Pattern;/** * 根據讀取配置的txt判斷是否為法定節假日,及法定工作日 * @author */public class HolidayWorkdayUtil { PRivate SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); private static List<String> holidays = new ArrayList<String>(); private static List<String> workdays = new ArrayList<String>(); /** * 獲取剩余的工作日天數 * @param date * @return * @throws ParseException */ public int getWorkDayNum(String dateStartStr,String dateEndStr) throws ParseException{ Date now=sdf.parse(dateStartStr); boolean flag = true; int count=0; String today=""; Date da=sdf.parse(dateEndStr); if(da.getTime()>=now.getTime()){ //System.out.println(holidays); // System.out.println(workdays); Calendar c = Calendar.getInstance(); for(int i=0;i<=3650;i++){ c.setTime(now); c.set(Calendar.DATE, c.get(Calendar.DATE) + i); int dateType = getDateType(c); today = sdf.format(c.getTime()); //System.out.println("date..."+today); //如果文件不存在當前日期。判斷是否周六日 if(dateType==0){ if(c.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY|| c.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){ flag = false; }else{ flag=true; } }else{//如果存在當前日期,根據返回的類型判斷 if(dateType==1){//節假日 flag = false; }else if(dateType==2){//工作日 flag = true; } } // System.out.println(today+"是:"+(flag==true?"工作日":"節假日")); if(flag){ count++; } // System.out.println(count); if(today.equals(dateEndStr) || today==dateEndStr){ break; } } } return count-1; } /** * 判斷當天是否是工作日 (工作日:true;節假日:false) * @param filePath * @return * @throws ParseException */ public String getWorkDay(String dateStartStr,int n) throws ParseException{ boolean flag = true; int count=0; String today=""; //System.out.println(holidays); //System.out.println(workdays); Date now=sdf.parse(dateStartStr); Calendar c = Calendar.getInstance(); for(int i=0;i<=3650;i++){//這里是一天一天的加,如果有更好的也可以 c.setTime(now); c.set(Calendar.DATE, c.get(Calendar.DATE) + i); int dateType = getDateType(c); today = sdf.format(c.getTime()); //System.out.println("date..."+today); //如果文件不存在當前日期。判斷是否周六日 if(dateType==0){ if(c.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY|| c.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){ flag = false; }else{ flag=true; } }else{//如果存在當前日期,根據返回的類型判斷 if(dateType==1){//節假日 flag = false; }else if(dateType==2){//工作日 flag = true; } } // System.out.println(today+"是:"+(flag==true?"工作日":"節假日")); if(flag){ count++; } // System.out.println(count); if(count==(n+1)){ break; } } return today; } /** * 根據判斷當前時間是否是節假日還是工作日 (txt中不存在當前日期:0;節假日:1;工作日:2) * 如果當前日期在txt中的節假日和工作日都寫了,默認的工作日 * @return */ private int getDateType(Calendar c){ int type = 0; String today = sdf.format(c.getTime()); if(holidays.size()>0){ for(String holiday:holidays){ if(holiday.equals(today)){ type = 1; break; } } } if(workdays.size()>0){ for(String workday:workdays){ if(workday.equals(today)){ type = 2; } } } return type; } /** * 讀取excel中的節假日和工作日,同時統一日期格式為2017-01-01 */ public static void initialize(String filePath){ if(filePath==null||"".equals(filePath)){ return ; } Scanner in = null; try { in = new Scanner(new File(filePath)); String result1 = ""; while (in.hasNextLine()) { result1 = in.nextLine() ; String[] strArray=result1.split("/t"); if(strArray==null||strArray.length==0){ return; } //獲取第一列數據-節假日 String analyStartDate=""; String startDateStr=""; try{ analyStartDate=strArray[0].trim(); if(analyStartDate=="" || analyStartDate.equals("") || "http://".contains(analyStartDate)){ analyStartDate=""; }else{ Pattern pa = Pattern.compile("http://D+"); String[] numbers = pa.split(analyStartDate); int a=0; for(String number:numbers){ if(null!=number && !"".equals(number)){ if(a>0 && a<3){ int i = Integer.parseInt(number); if(i<10 && !number.contains("0")){ startDateStr=startDateStr+"-"+"0"+number; }else{ startDateStr=startDateStr+"-"+number; } a++; }else if(a==0){ startDateStr=""+number; a++; }else{ break; } } } if(a<3 || a>=4){ startDateStr=""; } analyStartDate=startDateStr; holidays.add(analyStartDate); } }catch(Exception e){ e.printStackTrace(); } //獲取第二列數據-工作日 String workDate=""; String workDateStr=""; try{ workDate=strArray[1].trim(); if(workDate=="" || workDate.equals("") || "http://".contains(workDate)){ workDate=""; }else{ Pattern pa = Pattern.compile("http://D+"); String[] numbers = pa.split(workDate); int a=0; for(String number:numbers){ if(null!=number && !"".equals(number)){ if(a>0 && a<3){ int i = Integer.parseInt(number); if(i<10 && !number.contains("0")){ workDateStr=workDateStr+"-"+"0"+number; }else{ workDateStr=workDateStr+"-"+number; } a++; }else if(a==0){ workDateStr=""+number; a++; }else{ break; } } } if(a<3 || a>=4){ workDateStr=""; } workDate=workDateStr; workdays.add(workDate); } }catch(Exception e){ e.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } finally { if (in != null) { in.close(); } } }}

如果輸入的天數是負數則加判斷

HolidayWorkdayUtil h=new HolidayWorkdayUtil();if(n<0){ Calendar c = Calendar.getInstance(); c.setTime(new Date()); c.set(Calendar.YEAR, c.get(Calendar.YEAR) - 1);//如果為負數,先把時間調回到一年前開始迭代 def nn=-n; //println nn; for(int i=0;i<=365;i++){ c.add(5, 1); //表示天加一 startDateStr=Util.dateParser1.format(c.getTime()); dayNum = h.getWorkDayNum(startDateStr,todayStr); //println workday if(dayNum==nn){ break; } } workday=startDateStr; }else{ workday = h.getWorkDay(todayStr,n); }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩精品中文字幕| 欧美日韩成人免费| 日韩中文有码在线视频| 九九热精品视频国产| 亚洲天堂av综合网| 日韩成人xxxx| 国产精品美女久久久免费| 欧美黑人性猛交| 亚洲久久久久久久久久久| 国产欧美一区二区白浆黑人| 久久久久久久久久国产精品| 亚洲福利视频网站| 欧美极品xxxx| 亚州国产精品久久久| 欧美久久精品一级黑人c片| 在线国产精品视频| 欧洲中文字幕国产精品| 欧美日韩久久久久| 2019中文字幕免费视频| 日韩精品亚洲精品| 一本久久综合亚洲鲁鲁| 欧美日韩福利电影| 欧美性xxxxxxxxx| 亚洲欧美日韩国产中文| 国产网站欧美日韩免费精品在线观看| 国产精品av免费在线观看| 美日韩丰满少妇在线观看| 国产精品xxx视频| 亚洲欧美日韩中文在线制服| 97精品在线观看| 国产精品视频999| 欧美中文在线观看国产| 欧美日韩在线影院| 91超碰caoporn97人人| 欧美成人精品h版在线观看| 色偷偷亚洲男人天堂| 精品久久久久国产| 国产日韩精品一区二区| 一级做a爰片久久毛片美女图片| 91精品国产综合久久久久久久久| 国产精品88a∨| 亚洲女在线观看| 国产视频精品xxxx| 欧美视频在线视频| 国产91露脸中文字幕在线| 欧美成年人视频网站欧美| 在线视频免费一区二区| 在线看日韩欧美| 欧美激情在线视频二区| 亚洲综合视频1区| 日韩在线中文视频| 正在播放欧美一区| 国产精品丝袜久久久久久不卡| 国产91九色视频| 日韩在线精品一区| 亚洲石原莉奈一区二区在线观看| 68精品国产免费久久久久久婷婷| 久久久精品美女| 91精品国产自产91精品| 热久久视久久精品18亚洲精品| 久久久亚洲影院你懂的| 亚洲少妇中文在线| 欧美大片网站在线观看| 亚洲精品videossex少妇| 亚洲成人精品久久| 亚洲天天在线日亚洲洲精| 欧美激情网站在线观看| 久久国产精品亚洲| 国产综合久久久久久| 色在人av网站天堂精品| 国产精品日韩精品| 热久久免费国产视频| 久久国产精品久久久久久| 亚洲欧美另类中文字幕| 97av在线视频免费播放| 欧美尤物巨大精品爽| 国产日本欧美视频| 久久久久久久国产精品视频| 日韩欧美视频一区二区三区| 国产在线观看精品一区二区三区| 神马久久桃色视频| 96国产粉嫩美女| 91视频国产精品| 国产精品都在这里| 国产中文字幕亚洲| 欧美大尺度电影在线观看| 91香蕉嫩草神马影院在线观看| 疯狂做受xxxx高潮欧美日本| 亚洲图片欧洲图片av| 热久久美女精品天天吊色| 亚洲成人在线视频播放| 亚洲精品电影网在线观看| 亚洲图片欧美日产| 日韩一区二区久久久| 欧美在线视频网| 欧美专区第一页| 欧美一区二三区| 欧美日韩加勒比精品一区| 欧美日韩国产综合视频在线观看中文| 日韩中文字幕欧美| 欧美影院久久久| 国产精品视频区1| 国产精品成人一区| 国产精品久久久久久久久免费看| 黄色成人在线播放| 成人久久一区二区三区| 久久久av网站| 中文字幕亚洲第一| 在线观看国产精品淫| 免费av在线一区| 日韩av观看网址| 欧美日韩在线第一页| 91chinesevideo永久地址| 日本三级久久久| 日韩电影中文字幕| 亚洲国产精品电影在线观看| 人妖精品videosex性欧美| 中文字幕久热精品在线视频| 日韩精品免费看| 亚洲精品国产精品国产自| 国精产品一区一区三区有限在线| 福利一区福利二区微拍刺激| 国产精品旅馆在线| 日本久久久久久久久久久| 午夜伦理精品一区| 久久久久久久久久久亚洲| 久久这里只有精品99| 国产日韩欧美综合| 欧美日韩成人免费| 亚洲电影免费观看高清完整版在线| 国产精品久久国产精品99gif| 亚洲精品久久久一区二区三区| 日本道色综合久久影院| 97人人爽人人喊人人模波多| 亚洲美女视频网站| 欧美性xxxxxxxxx| 日本精品久久久| 国产精品一二三视频| 欧美日韩在线视频一区| 亚洲无av在线中文字幕| 97涩涩爰在线观看亚洲| 日韩不卡在线观看| 亚洲直播在线一区| 国产欧美日韩免费看aⅴ视频| 91在线免费观看网站| 国产精品露脸自拍| 这里只有精品丝袜| 欧美一级大片在线观看| 国产精品亚洲激情| 日韩精品免费在线播放| www亚洲欧美| 久久成年人视频| 亚洲护士老师的毛茸茸最新章节| 亚洲影视九九影院在线观看| 精品国产一区二区三区四区在线观看| 国产日韩综合一区二区性色av| 亚洲欧美日韩久久久久久| 91中文在线观看| 亚洲影院色在线观看免费| 色青青草原桃花久久综合| 国产精品美女主播在线观看纯欲| 亚洲天堂av女优| 欧美精品在线第一页| 国产999精品久久久影片官网|