1 <span style="line-height: 25.2px;">/** 2 * 日期解析,字符串转日期 3 * @param dateString 可以为2017-02-16,2017/02/16,2017.02.16 4 * @returns {Date} 返回对应的日期对象 5 */ 6 function dateParse(dateString){ 7 var SEPARATOR_BAR = "-"; 8 var SEPARATOR_SLASH = "/"; 9 var SEPARATOR_DOT = "."; 10 var dateArray; 11 if(dateString.indexOf(SEPARATOR_BAR) > -1){ 12 dateArray = dateString.split(SEPARATOR_BAR); 13 }else if(dateString.indexOf(SEPARATOR_SLASH) > -1){ 14 dateArray = dateString.split(SEPARATOR_SLASH); 15 }else{ 16 dateArray = dateString.split(SEPARATOR_DOT); 17 } 18 return new Date(dateArray[0], dateArray[1]-1, dateArray[2]); 19 }; 20 21 /** 22 * 日期比较大小 23 * compareDateString大于dateString,返回1; 24 * 等于返回0; 25 * compareDateString小于dateString,返回-1 26 * @param dateString 日期 27 * @param compareDateString 比较的日期 28 */ 29 function dateCompare(dateString, compareDateString){ 30 if(isEmpty(dateString)){ 31 alert("dateString不能为空"); 32 return; 33 } 34 if(isEmpty(compareDateString)){ 35 alert("compareDateString不能为空"); 36 return; 37 } 38 var dateTime = dateParse(dateString).getTime(); 39 var compareDateTime = dateParse(compareDateString).getTime(); 40 if(compareDateTime > dateTime){ 41 return 1; 42 }else if(compareDateTime == dateTime){ 43 return 0; 44 }else{ 45 return -1; 46 } 47 }; 48 49 /** 50 * 判断日期是否在区间内,在区间内返回true,否返回false 51 * @param dateString 日期字符串 52 * @param startDateString 区间开始日期字符串 53 * @param endDateString 区间结束日期字符串 54 * @returns {Number} 55 */ 56 function isDateBetween(dateString, startDateString, endDateString){ 57 if(isEmpty(dateString)){ 58 alert("dateString不能为空"); 59 return; 60 } 61 if(isEmpty(startDateString)){ 62 alert("startDateString不能为空"); 63 return; 64 } 65 if(isEmpty(endDateString)){ 66 alert("endDateString不能为空"); 67 return; 68 } 69 var flag = false; 70 var startFlag = (dateCompare(dateString, startDateString) < 1); 71 var endFlag = (dateCompare(dateString, endDateString) > -1); 72 if(startFlag && endFlag){ 73 flag = true; 74 } 75 return flag; 76 }; 77 78 /** 79 * 判断日期区间[startDateCompareString,endDateCompareString]是否完全在别的日期区间内[startDateString,endDateString] 80 * 即[startDateString,endDateString]区间是否完全包含了[startDateCompareString,endDateCompareString]区间 81 * 在区间内返回true,否返回false 82 * @param startDateString 新选择的开始日期,如输入框的开始日期 83 * @param endDateString 新选择的结束日期,如输入框的结束日期 84 * @param startDateCompareString 比较的开始日期 85 * @param endDateCompareString 比较的结束日期 86 * @returns {Boolean} 87 */ 88 function isDatesBetween(startDateString, endDateString, 89 startDateCompareString, endDateCompareString){ 90 if(isEmpty(startDateString)){ 91 alert("startDateString不能为空"); 92 return; 93 } 94 if(isEmpty(endDateString)){ 95 alert("endDateString不能为空"); 96 return; 97 } 98 if(isEmpty(startDateCompareString)){ 99 alert("startDateCompareString不能为空"); 100 return; 101 } 102 if(isEmpty(endDateCompareString)){ 103 alert("endDateCompareString不能为空"); 104 return; 105 } 106 var flag = false; 107 var startFlag = (dateCompare(startDateCompareString, startDateString) < 1); 108 var endFlag = (dateCompare(endDateCompareString, endDateString) > -1); 109 if(startFlag && endFlag){ 110 flag = true; 111 } 112 return flag; 113 114 } 115 116 checkTime = function() { 117 var startTime = document.getElementById("startTime").value; 118 var endTime = document.getElementById("endTime").value; 119 compareCalendar(startTime, endTime); 120 } 121 //比较日前大小 122 function compareDate(checkStartDate, checkEndDate) { 123 var arys1= new Array(); 124 var arys2= new Array(); 125 if(checkStartDate != null && checkEndDate != null) { 126 arys1=checkStartDate.split('-'); 127 var sdate=new Date(arys1[0],parseInt(arys1[1]-1),arys1[2]); 128 arys2=checkEndDate.split('-'); 129 var edate=new Date(arys2[0],parseInt(arys2[1]-1),arys2[2]); 130 if(sdate > edate) { 131 alert("日期开始时间大于结束时间"); 132 return false; 133 } else { 134 alert("通过"); 135 return true; 136 } 137 } 138 } 139 140 //判断日期,时间大小 141 function compareTime(startDate, endDate) { 142 if (startDate.length > 0 && endDate.length > 0) { 143 var startDateTemp = startDate.split(" "); 144 var endDateTemp = endDate.split(" "); 145 146 var arrStartDate = startDateTemp[0].split("-"); 147 var arrEndDate = endDateTemp[0].split("-"); 148 149 var arrStartTime = startDateTemp[1].split(":"); 150 var arrEndTime = endDateTemp[1].split(":"); 151 152 var allStartDate = new Date(arrStartDate[0], arrStartDate[1], arrStartDate[2], arrStartTime[0], arrStartTime[1], arrStartTime[2]); 153 var allEndDate = new Date(arrEndDate[0], arrEndDate[1], arrEndDate[2], arrEndTime[0], arrEndTime[1], arrEndTime[2]); 154 155 if (allStartDate.getTime() >= allEndDate.getTime()) { 156 alert("startTime不能大于endTime,不能通过"); 157 return false; 158 } else { 159 alert("startTime小于endTime,所以通过了"); 160 return true; 161 } 162 } else { 163 alert("时间不能为空"); 164 return false; 165 } 166 } 167 //比较日期,时间大小 168 function compareCalendar(startDate, endDate) { 169 if (startDate.indexOf(" ") != -1 && endDate.indexOf(" ") != -1 ) { 170 //包含时间,日期 171 compareTime(startDate, endDate); 172 } else { 173 //不包含时间,只包含日期 174 compareDate(startDate, endDate); 175 } 176 }; 177 </span>