JS和JAVA版本的工作日计算器
来源:互联网 发布:视频监控端口号 编辑:程序博客网 时间:2024/05/30 22:55
这是工作中处理需求时从网上找来的现成的方法,现在记录一下。
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 = 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);
阅读全文
0 0
- JS和JAVA版本的工作日计算器
- js限定工作日和时间段
- js版本计算器
- java工作日和节假日判断
- java工作日和节假日判断
- java获取当月的工作日
- js版本计算器第二版
- js版本计算器第三版
- JS端计算一段时间内工作日的天数,排除周末和法定节假日,同时考虑到调休日
- java 计算工作日的。8小时制度
- java计算两个日期之前的天数(工作日),排除节假日和周末
- 简易的JS计算器
- 简单的JS计算器
- js 写的计算器
- JS的简单计算器
- js做的计算器
- 简单的JS 计算器
- 简单的js计算器
- Ajax+Jpgraph制作动态折线图
- 2017中国混合云十大案例评选 ZStack服务最多是偶然的吗?
- Atom 插件无法安装的问题以及本地离线安装的方法
- Mysql报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
- Ajax模拟制作进度条
- JS和JAVA版本的工作日计算器
- 第一个Smarty程序
- 设计模式六大原则综述
- 创建线程池
- Smarty模板文件中的一般变量
- 一些笔记
- Kubernetes对象之Name和Namespaces
- Smarty的保留变量
- handler