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

首頁 > 學院 > 開發設計 > 正文

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

2019-11-14 09:32:32
字體:
來源:轉載
供稿:網友

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

首先手動錄入今年或最近幾年的工作日和調休日,先在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
九九热99久久久国产盗摄| 96国产粉嫩美女| 日韩av免费看| 日韩欧美国产黄色| 欧美乱妇高清无乱码| 91精品久久久久久| 国产精品久久久久久av福利| 91高清视频免费观看| 国产精品久久久久久久久久久不卡| 青青草原一区二区| 亚洲精品电影网站| 91社区国产高清| 亚洲剧情一区二区| 91深夜福利视频| 久久国产精品免费视频| 国产精品久久久久久久久久久久久| 亚洲奶大毛多的老太婆| 国产精品777| 欧美中文在线观看国产| 欧美日韩加勒比精品一区| 国产精品中文字幕在线观看| 精品国产一区二区三区久久狼5月| 亚洲国内高清视频| 欧美日韩国产麻豆| 97在线视频免费播放| 久久男人资源视频| 国产精品白嫩美女在线观看| 日韩视频永久免费观看| 欧美高清激情视频| 日韩欧美精品免费在线| 久久婷婷国产麻豆91天堂| 欧美亚洲视频一区二区| 日韩欧美高清视频| 国产成人精品一区| 国产成人综合av| 久久久噜久噜久久综合| 欧美国产中文字幕| 国产综合在线看| 国产在线高清精品| 亚洲一区国产精品| 日韩免费在线观看视频| 久久久影视精品| 懂色av一区二区三区| 日韩国产高清污视频在线观看| 欧美www视频在线观看| 国产热re99久久6国产精品| 欧美精品成人91久久久久久久| 亚洲伊人久久综合| 久久久黄色av| 精品中文字幕在线2019| www.xxxx精品| 亚洲激情视频在线观看| 国产成人aa精品一区在线播放| 日本不卡高字幕在线2019| 奇米四色中文综合久久| 国模精品系列视频| 欧美做受高潮1| 精品国偷自产在线| 亚洲伦理中文字幕| 国产精品日日摸夜夜添夜夜av| 一区二区三区黄色| 精品一区二区三区四区在线| 亚洲的天堂在线中文字幕| 久久精品最新地址| 最近2019好看的中文字幕免费| 亚洲精品久久久久久久久久久| 国产免费亚洲高清| 欧美一区二区三区免费观看| 久久久久久12| 中文国产成人精品| 久久精品成人欧美大片古装| 色视频www在线播放国产成人| 国产91亚洲精品| 98精品国产高清在线xxxx天堂| 91久热免费在线视频| 欧美日韩中文字幕综合视频| 91色精品视频在线| 91九色国产社区在线观看| 欧美日韩一区二区三区| 亚洲欧美综合区自拍另类| 欧美国产精品人人做人人爱| 亚洲欧美激情四射在线日| 久久精品美女视频网站| 欧美成人激情在线| www.欧美视频| 97在线免费观看| 亚洲天堂av网| 亚洲成av人乱码色午夜| 日韩精品中文字幕视频在线| 亚洲自拍中文字幕| 日韩乱码在线视频| 国产日韩欧美综合| 国产精品亚发布| 在线日韩日本国产亚洲| 欧美交受高潮1| 久久久精品2019中文字幕神马| 亚洲视频免费一区| 国产99久久久欧美黑人| 91精品国产综合久久香蕉最新版| 欧美老女人在线视频| 国产亚洲精品美女| 欧美黑人一区二区三区| 992tv成人免费视频| 日韩hd视频在线观看| 国产99久久精品一区二区永久免费| 欧美激情一级二级| 国产在线视频2019最新视频| 国产一区二区在线免费视频| 91精品国产91久久久久久久久| 欧美亚洲一级片| 欧美日韩不卡合集视频| 国产欧美日韩视频| 国产精品 欧美在线| 欧美性猛交xxxx乱大交极品| 亚洲欧洲偷拍精品| 精品国产一区二区三区久久久| 欧美日韩视频免费播放| 亚洲国产成人91精品| 亚洲电影中文字幕| 国产精品爽黄69| 黑人巨大精品欧美一区二区一视频| 亚洲精品小视频| 精品亚洲一区二区| 久久视频在线视频| 亚洲最新av在线网站| 国产美女91呻吟求| 久久成人精品一区二区三区| 成人免费福利视频| 日本免费一区二区三区视频观看| 欧美一区深夜视频| 亚洲国产精品一区二区三区| 日韩欧美综合在线视频| 伊人伊成久久人综合网站| 欧美国产日本在线| 欧美黑人xxxx| 国产精品久久久久久久久久| 91久久久久久国产精品| 日本高清不卡在线| 中文字幕一区电影| 亚洲欧美日韩成人| 国产成人精品一区二区在线| 深夜福利日韩在线看| 欧美激情图片区| 91久久国产精品91久久性色| 久久天天躁狠狠躁夜夜躁2014| 黄色精品一区二区| 国产精品福利在线| 亚洲人永久免费| 青青精品视频播放| 国语对白做受69| 色yeye香蕉凹凸一区二区av| 久久久久免费精品国产| 欧美一级片在线播放| 亚洲aⅴ日韩av电影在线观看| 国产精品高精视频免费| 中文字幕成人精品久久不卡| 国产日韩中文字幕| 日韩黄色在线免费观看| 精品无人国产偷自产在线| 精品久久香蕉国产线看观看亚洲| 久久av红桃一区二区小说| 国产综合视频在线观看| 一区二区三区视频观看| 久久91超碰青草是什么|