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

首頁 > 編程 > Java > 正文

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

2019-11-11 07:54:20
字體:
來源:轉載
供稿:網友

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

首先手動錄入今年或最近幾年的工作日和調休日,先在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
成人免费视频在线观看超级碰| 日本精品久久久久影院| 欧美麻豆久久久久久中文| 欧美亚洲国产成人精品| 精品久久久久人成| 欧美精品videos另类日本| 成人疯狂猛交xxx| 狠狠操狠狠色综合网| 欧美性猛交xxxx乱大交极品| 91精品视频专区| 激情亚洲一区二区三区四区| 精品国产欧美一区二区五十路| 久久激情视频久久| 91精品国产九九九久久久亚洲| 精品国产拍在线观看| 伊人青青综合网站| 久久久久久久久久久国产| 国产亚洲欧洲高清| 国产一区二中文字幕在线看| 欧美成人手机在线| 国产精品com| 日韩av在线免费观看| 亚洲一区二区三区在线视频| 亚洲国产三级网| 色悠久久久久综合先锋影音下载| 亚洲第一综合天堂另类专| 国内精品久久久久影院 日本资源| 日本免费在线精品| 久久久久久国产精品美女| 色婷婷**av毛片一区| 日韩美女在线播放| 日韩欧美成人精品| 91探花福利精品国产自产在线| 久久中文字幕在线| 欧美日韩亚洲激情| 国产精品久久久久久久久免费看| 亚洲人av在线影院| 97色在线播放视频| 日韩中文字幕不卡视频| 欧美性视频在线| 亚洲经典中文字幕| 8x海外华人永久免费日韩内陆视频| 欧美性猛交xxxx富婆| 成人性生交大片免费观看嘿嘿视频| 亚洲美女在线看| 国产精品欧美日韩久久| 这里只有精品视频在线| 国产精品成久久久久三级| 日韩hd视频在线观看| 欧美日韩成人在线播放| 亚洲丁香婷深爱综合| 久久精品国产欧美亚洲人人爽| 性色av一区二区咪爱| 4k岛国日韩精品**专区| 国产日韩中文在线| 久久精品青青大伊人av| 日韩av在线精品| 国内精品中文字幕| 国产精品女视频| 国产精品久久一区| 国产福利精品在线| 97视频网站入口| 日本精品va在线观看| 不卡av电影在线观看| 久久精品视频导航| 国产精品第二页| 久久久亚洲欧洲日产国码aⅴ| 欧美日韩在线观看视频| 欧美日韩在线观看视频| 久久视频这里只有精品| 亚洲国产精品va在看黑人| 国产精品美乳在线观看| 欧美在线观看网址综合| 欧美日韩午夜激情| 97超碰国产精品女人人人爽| 一夜七次郎国产精品亚洲| 91精品国产乱码久久久久久蜜臀| 国产精品网站入口| 久久久精品在线观看| 欧美在线播放视频| 成人动漫网站在线观看| 亚洲va男人天堂| 中文字幕精品av| 亚洲精品视频久久| 久热在线中文字幕色999舞| 久久久成人精品视频| 久久视频这里只有精品| 最近2019中文字幕mv免费看| 欧美日韩亚洲视频| 隔壁老王国产在线精品| 欧美成人午夜视频| 中文字幕在线亚洲| 九九精品在线观看| 欧美丰满少妇xxxxx做受| 欧美激情中文字幕乱码免费| 亚洲精品欧美一区二区三区| 另类专区欧美制服同性| 亚洲欧美一区二区三区在线| 久久av中文字幕| 5252色成人免费视频| 日韩欧美国产一区二区| 日韩在线播放av| 亚洲乱码国产乱码精品精| 性欧美长视频免费观看不卡| 欧美成人国产va精品日本一级| 精品久久久久久久久久久久久久| 国产精品第一页在线| 国产成人在线视频| 欧美在线观看网址综合| 国产精品99导航| 青青草国产精品一区二区| 国产精品久久久久久中文字| 亚洲国产精品va在看黑人| 中文字幕亚洲图片| 成人欧美一区二区三区在线| 欧美丝袜美女中出在线| 国产精品日日做人人爱| 欧美一区二区三区免费观看| 国产精品第七十二页| www.久久草.com| 中文字幕久热精品在线视频| 91精品视频免费| 亚洲国产精久久久久久久| 亚洲成人激情小说| 亚洲一区二区三区在线视频| 成人在线激情视频| 91产国在线观看动作片喷水| 26uuu久久噜噜噜噜| 国产欧美一区二区三区久久人妖| 亚洲级视频在线观看免费1级| 2018中文字幕一区二区三区| 精品久久久视频| 国产精品福利在线| 国产精品成人va在线观看| 欧美激情国产日韩精品一区18| 欧美日韩一区二区免费在线观看| 国产精品久久久久久久av电影| 亚洲人成网站777色婷婷| 欧美专区在线播放| 欧美午夜女人视频在线| 91黑丝高跟在线| 欧美日韩在线视频一区二区| 国产欧美 在线欧美| 欧美精品www在线观看| 久久在线免费视频| 国产情人节一区| 欧美日韩国产区| 国产亚洲精品一区二555| 欧美高清性猛交| 精品动漫一区二区三区| 亚洲精品理论电影| 亚洲国产精品va在线观看黑人| 狠狠色噜噜狠狠狠狠97| 51ⅴ精品国产91久久久久久| 96pao国产成视频永久免费| 欧美俄罗斯乱妇| 亚洲japanese制服美女| 亚洲欧美日本精品| 黄色精品在线看| 亚洲精品久久久一区二区三区| 992tv在线成人免费观看| 精品国产欧美一区二区五十路| 久久免费精品视频| 亚洲成人a**站|