标签:
1、给一个开始时间和结束时间;
2、计算在时间段内工作时间长度;
3、工作时间是9点-18点;
4、工作时长是8小时;
5、不记录周六和周日时间;
使用了moment.js
1 function GetWorkHours(beginDateTime, endDateTime) { 2 var _totalHour = 0; 3 //1、获取开始时间和结束时间之间的日 4 var _beginDate = moment(beginDateTime); 5 var _endDate = moment(endDateTime); 6 7 //整理时间 8 if (_beginDate.get("hour") < 9) { 9 //开始时间小于9点,设置为9点 10 _beginDate.hour(9); 11 } else if (_beginDate.isBetween(moment(_beginDate).hour(12), moment(_beginDate).hour(13), ‘hour‘, {})) { 12 //开始时间在12点-13点之间,设置为13点 13 _beginDate.hour(13); 14 } else if (_beginDate.get("hour") >= 18) { 15 _beginDate.add(1, ‘d‘).hour(9); 16 } 17 18 if (_endDate.get("hour") > 18) { 19 //结束时间大于18点,设置为18点 20 _endDate.hour(18); 21 } else if (_endDate.isBetween(moment(_endDate).hour(12), moment(_endDate).hour(13), ‘hour‘, {})) { 22 //结束时间在12点-13点之间,设置为12点 23 _endDate.hour(12); 24 } else if (_endDate.get("hour") <= 9) { 25 _beginDate.add(-1, ‘d‘).hour(18); 26 } 27 28 29 var _tempDateTime = _beginDate;//缓存一个日期,起始时开始时间 30 while (moment(_tempDateTime).isSameOrBefore(_endDate, "day")) { 31 32 //2.1、判断是否周日,周六 33 var _week = moment(_tempDateTime).weekday(); 34 if (_week == 0 || _week == 6) { 35 //是周末,不算入时间 36 _tempDateTime.add(1, ‘d‘); 37 continue; 38 } 39 40 if (moment(_tempDateTime).isSame(_beginDate, "day")) { 41 if (moment(_tempDateTime).isSame(_endDate, "day")) { 42 //开始时间和结束时间是同一天,结束时间-开始时间 43 _totalHour += _endDate.diff(_beginDate, "hours", true); 44 //如果跨越中午12点30分,减去一个小时 45 if (moment(_tempDateTime).hour(12).minute(30).isBetween(_beginDate, _endDate, ‘hour‘)) { 46 _totalHour -= 1; 47 } 48 _tempDateTime.add(1, ‘d‘); 49 continue; 50 } else { 51 //开始时间和结束时间不是同一天,18点-开始时间 52 _totalHour += moment(_beginDate).hour(18).diff(_beginDate, "hours", true); 53 //如果跨越中午12点30分,减去一个小时 54 if (moment(_tempDateTime).hour(12).minute(30).isBetween(_beginDate, moment(_beginDate).hour(18), ‘hour‘)) { 55 _totalHour -= 1; 56 } 57 _tempDateTime.add(1, ‘d‘); 58 continue; 59 } 60 } 61 else if (moment(_tempDateTime).isSame(_endDate, "day")) { 62 //是否和结束时间是同一天,结束时间-开始时间9点, 63 _totalHour += _endDate.diff(moment(_endDate).hour(9), "hours", true); 64 //如果跨越中午12点30分,减去一个小时 65 if (moment(_tempDateTime).hour(12).minute(30).isBetween(moment(_endDate).hour(9), _endDate, ‘hour‘)) { 66 _totalHour -= 1; 67 } 68 _tempDateTime.add(1, ‘d‘); 69 continue; 70 } 71 else { 72 _totalHour += 8; 73 _tempDateTime.add(1, ‘d‘); 74 continue; 75 } 76 77 } 78 return _totalHour < 0 ? 0 : _totalHour; 79 }
标签:
原文地址:http://www.cnblogs.com/qiumc/p/5408939.html