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

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

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

2019-11-14 08:57:42
字體:
來源:轉載
供稿:網友

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

首先手動錄入今年或最近幾年的工作日和調休日,先在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另类日本| 91精品视频在线播放| 日韩欧美高清在线视频| 欧美一级视频在线观看| 久久久999国产精品| 日韩免费高清在线观看| 日韩一区二区三区在线播放| 久久久久久国产三级电影| 亚洲美女中文字幕| 国产精品jvid在线观看蜜臀| 日韩av在线免费播放| 欧美激情在线观看视频| 欧美日韩一区二区免费在线观看| 国产视频精品免费播放| 98午夜经典影视| 日韩av在线影院| 日韩欧美国产视频| 国产精品久久久久久久久借妻| 中文字幕日本欧美| 成人精品久久av网站| 亚州成人av在线| 国产精品99久久久久久久久久久久| 欧美猛交ⅹxxx乱大交视频| 91久久中文字幕| 国产亚洲欧洲高清一区| 韩国欧美亚洲国产| 欧美专区在线播放| 国产精品三级在线| 久久久噜噜噜久噜久久| 亚洲国产精彩中文乱码av| 91精品国产综合久久香蕉| 久久大大胆人体| 亚洲人精选亚洲人成在线| 日韩va亚洲va欧洲va国产| 久久国产精品亚洲| 精品国产视频在线| 亚洲性av在线| 日本在线观看天堂男亚洲| 日韩电影大全免费观看2023年上| 国产精品v片在线观看不卡| 中文字幕欧美日韩在线| 久久亚洲精品一区二区| 亚洲欧美一区二区精品久久久| 久久久久久国产精品久久| 一区二区三欧美| 曰本色欧美视频在线| 国外色69视频在线观看| 97在线视频免费看| 奇米4444一区二区三区| 精品人伦一区二区三区蜜桃免费| 欧美色视频日本版| 欧洲日本亚洲国产区| 亚洲欧美日韩国产中文专区| 国产在线观看91精品一区| 亚洲国产第一页| 亚洲成人激情在线观看| 国产啪精品视频网站| 亚洲欧美日韩精品久久亚洲区| 亚洲成av人乱码色午夜| 亚洲一级一级97网| 久久久久成人精品| 亚洲精品一区久久久久久| 国产做受高潮69| 国产精品网址在线| 欧美另类极品videosbest最新版本| 欧美精品福利在线| 日韩精品免费综合视频在线播放| 亚洲国产私拍精品国模在线观看| 668精品在线视频| 亚洲第一福利在线观看| 亚洲成人教育av| 亚洲精品电影网站| 成人国产精品av| 欧美与欧洲交xxxx免费观看| 91精品啪aⅴ在线观看国产| 亚洲 日韩 国产第一| 国产精品亚洲一区二区三区| 久久久国产一区二区| 日韩美女av在线免费观看| 全亚洲最色的网站在线观看| 国产丝袜一区二区三区免费视频| 中文国产成人精品久久一| 大荫蒂欧美视频另类xxxx| 日韩精品亚洲元码| 亚洲美女在线看| 成人美女免费网站视频| 欧美高清性猛交| 亚洲精品福利免费在线观看| 日韩中文字幕视频在线观看| 国产美女直播视频一区| 亚洲国产欧美一区二区丝袜黑人| 69视频在线免费观看| 欧美日韩亚洲视频一区| 91精品中国老女人| 91亚洲永久免费精品| 久久久久久12| 日韩中文有码在线视频| 欧美性色xo影院| 欧美日韩另类视频| 色婷婷av一区二区三区在线观看| 国产一区二区香蕉| 在线观看欧美视频| 亚洲最大av网站| 国产欧美一区二区白浆黑人| 欧美精品久久久久久久久久| 欧美激情精品久久久久久变态| 激情久久av一区av二区av三区| 色妞在线综合亚洲欧美| 美女999久久久精品视频| 国产精品入口日韩视频大尺度| 亚洲成avwww人| 国产伊人精品在线| 欧美富婆性猛交| 国产91亚洲精品| 亚洲精品国偷自产在线99热| 国产激情视频一区| 精品亚洲男同gayvideo网站| 国产精品入口福利| 亚洲变态欧美另类捆绑| 欧美一级免费视频| 精品亚洲精品福利线在观看| 国产一区在线播放| 日韩在线中文字幕| 色琪琪综合男人的天堂aⅴ视频| 久久精品国产91精品亚洲| www.99久久热国产日韩欧美.com| 欧美香蕉大胸在线视频观看| 亚洲精品资源美女情侣酒店| 成人精品在线观看| 国产一区二区在线免费视频| 九九精品在线视频| 韩国三级电影久久久久久| 91在线高清免费观看| 国产丝袜一区二区三区| 国产一区二区三区精品久久久| 欧美成人手机在线| 6080yy精品一区二区三区| 精品在线欧美视频| 国产亚洲精品一区二区| 激情亚洲一区二区三区四区| 亚洲一区二区国产| 国产亚洲美女精品久久久| 精品国产乱码久久久久酒店| 中文在线不卡视频| 精品国产欧美成人夜夜嗨| 日韩中文字幕精品视频| 亚洲a在线播放| 亚洲电影免费观看高清完整版在线观看| 欧美大尺度电影在线观看| 国产精品久久久久久久久免费看| 亚洲精品免费在线视频| 成人国产精品一区| 欧美日韩中文在线| 国产成人精品a视频一区www| 黑人巨大精品欧美一区二区免费| 亚洲第一精品夜夜躁人人躁| 欧美理论电影在线观看| 国产97在线视频| 日韩精品视频中文在线观看|