JS和JAVA版本的工作日计算器
2017-11-22 11:03
357 查看
这是工作中处理需求时从网上找来的现成的方法,现在记录一下。
JS版本:
JAVA版本:
JS版本:
//获取预期日期时,把节假日和周末去掉的方法 var holiday= [];//配置节假日 var holidayMap={}; function getMap(hd){ for(var i=0;i<hd.length;i++){ holidayMap[hd[i]]='1'; } } function formatTen(f){ if (parseInt(f,10)<10){ return '0'+f; } return f; } function formateDate(date){ var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); return year + "-" + formatTen(month) + "-" + formatTen(day); } function getworkday(dat,itervalByDay){ var str=dat.split("-"); var date=new Date(); date.setUTCFullYear(str[0], str[1] - 1, str[2]); date.setUTCHours(0, 0, 0, 0); var millisceonds =date.getTime(); for(var i=1;i<=itervalByDay;i++){ millisceonds +=24*60*60*1000; date.setTime(millisceonds); if(date.getDay()==0||date.getDay()==6){ i--; }else{//过滤节假日 var d=formateDate(date); if(holidayMap[d]){ i--; } } } var year a7ab = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); var rq = year + "-" + formatTen(month) + "-" + formatTen(day); return rq; } getMap(holiday); //加载节假日 //注意:该方法是针对字符串进行计算的。 var dateToString = getworkday("2017-11-22",5); dateToString 得到的是 "2017-11-29" 因为 25号 和 26号是周六周日 已经筛去
JAVA版本:
public class DateUtilByXTX { private static List<Calendar> holidayList = new ArrayList<Calendar>(); //节假日列表 /** * * <p>Title: addDateByWorkDay </P> * <p>Description: TODO 计算相加day天,并且排除节假日和周末后的日期</P> * @param calendar 当前的日期 * @param day 相加天数 * @return * return Calendar 返回类型 返回相加day天,并且排除节假日和周末后的日期 * throws * date 2014-11-24 上午10:32:55 */ public static String addDateByWorkDay(Calendar calendar,int day){ try { for (int i = 0; i < day; i++) { calendar.add(Calendar.DAY_OF_MONTH, 1); if(checkHoliday(calendar)){ i--; } } } catch (Exception e) { e.printStackTrace(); } SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); return df.format(calendar.getTime()); } /** * * <p>Title: checkHoliday </P> * <p>Description: TODO 验证日期是否是节假日</P> * @param calendar 传入需要验证的日期 * @return * return boolean 返回类型 返回true是节假日,返回false不是节假日 * throws * date 2014-11-24 上午10:13:07 */ public static boolean checkHoliday(Calendar calendar) throws Exception{ //判断日期是否是周六周日 if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY || calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){ return true; } //判断日期是否是节假日 for (Calendar ca : holidayList) { if(ca.get(Calendar.MONTH) == calendar.get(Calendar.MONTH) && ca.get(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH)&& ca.get(Calendar.YEAR) == calendar.get(Calendar.YEAR)){ return true; } } return false; } /** * * <p>Title: initHolidayList </P> * <p>Description: TODO 把所有节假日放入list,验证前要先执行这个方法</P> * @param date 从数据库查 查出来的格式2014-05-09 * return void 返回类型 * throws * date 2014-11-24 上午10:11:35 */ public static void initHolidayList(List<String> date) { for (String string : date) { String[] da = string.split("-"); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, Integer.valueOf(da[0])); calendar.set(Calendar.MONTH, Integer.valueOf(da[1]) - 1);// 月份比正常小1,0代表一月 calendar.set(Calendar.DAY_OF_MONTH, Integer.valueOf(da[2])); holidayList.add(calendar); } } } //调用示例 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date createTime = sdf.parse(create_time); Calendar cal = Calendar.getInstance(); cal.setTime(createTime); String next_begin_time = DateUtilByXTX.addDateByWorkDay(cal, 1);
相关文章推荐
- 判断表达式括号是否匹配java和js版本
- oss上传文件阿里云(Java与js版本)
- js版本计算器第三版
- phantomjs的使用+Java代码+依赖js(兼容Linux和windows版本)
- [Android]Webview中JS接口调用Java-版本问题
- android中java调用js在4.3版本以上无效的问题
- Datatables v1.10服务端模式启动js-java版本
- 更新于2017.09 全新支持IE8以下的java版本和js版本
- js版本计算器第二版
- 今天大致了解了一下Java Script,实现了一个JS版的小计算器
- 在sdk的17以上版本webview中js不能调用java代码
- JavaScript进阶(十一)JsJava2.0版本
- java后台调用JS代码判断浏览器版本是否低于IE9,低版本跳转不同页面
- 华为机试题:火星计算器 java版本
- JavaScript进阶(十一)JsJava2.0版本
- java EE js css 加载及版本集中管理器
- phantomjs的使用+Java代码+依赖js(兼容Linux和windows版本)
- cocos2dx-js(3.14版本) JS与C++ 互调 JS与JAVA 互调,JS与OC 互调
- 微信支付java版本之JSAPI支付+发送模板消息
- phantomjs的使用+Java代码+依赖js(兼容Linux和windows版本)