date.prototype.format = function(format) { var date = { "m+": this.getmonth() + 1, "d+": this.getdate(), "h+": this.gethours(), "m+": this.getminutes(), "s+": this.getseconds(), "q+": math.floor((this.getmonth() + 3) / 3), "s+": this.getmilliseconds() }; if (/(y+)/i.test(format)) { format = format.replace(regexp.$1, (this.getfullyear() + '').substr(4 - regexp.$1.length)); } for (var k in date) { if (new regexp("(" + k + ")").test(format)) { format = format.replace(regexp.$1, regexp.$1.length == 1 ? date[k] : ("00" + date[k]).substr(("" + date[k]).length)); } } return format; } /** * 日期解析,字符串转日期 * @param datestring 可以为2017-02-16,2017/02/16,2017.02.16 * @returns {date} 返回对应的日期对象 */ function dateparse(datestring){ return new date(datestring.replace(/-/g,"/")) }; /** * 日期比较大小 * comparedatestring大于datestring,返回1; * 等于返回0; * comparedatestring小于datestring,返回-1 * @param datestring 日期 * @param comparedatestring 比较的日期 */ function datecompare(datestring, comparedatestring){ if(isempty(datestring)){ alert("datestring不能为空"); return; } if(isempty(comparedatestring)){ alert("comparedatestring不能为空"); return; } var datetime = dateparse(datestring).gettime(); var comparedatetime = dateparse(comparedatestring).gettime(); if(comparedatetime > datetime){ return 1; }else if(comparedatetime == datetime){ return 0; }else{ return -1; } }; /** * 判断日期是否在区间内,在区间内返回true,否返回false * @param datestring 日期字符串 * @param startdatestring 区间开始日期字符串 * @param enddatestring 区间结束日期字符串 * @returns {number} */ function isdatebetween(datestring, startdatestring, enddatestring){ if(isempty(datestring)){ alert("datestring不能为空"); return; } if(isempty(startdatestring)){ alert("startdatestring不能为空"); return; } if(isempty(enddatestring)){ alert("enddatestring不能为空"); return; } var flag = false; var startflag = (datecompare(datestring, startdatestring) < 1); var endflag = (datecompare(datestring, enddatestring) > -1); if(startflag && endflag){ flag = true; } return flag; }; /** * 判断日期区间[startdatecomparestring,enddatecomparestring]是否完全在别的日期区间内[startdatestring,enddatestring] * 即[startdatestring,enddatestring]区间是否完全包含了[startdatecomparestring,enddatecomparestring]区间 * 在区间内返回true,否返回false * @param startdatestring 新选择的开始日期,如输入框的开始日期 * @param enddatestring 新选择的结束日期,如输入框的结束日期 * @param startdatecomparestring 比较的开始日期 * @param enddatecomparestring 比较的结束日期 * @returns {boolean} */ function isdatesbetween(startdatestring, enddatestring, startdatecomparestring, enddatecomparestring){ if(isempty(startdatestring)){ alert("startdatestring不能为空"); return; } if(isempty(enddatestring)){ alert("enddatestring不能为空"); return; } if(isempty(startdatecomparestring)){ alert("startdatecomparestring不能为空"); return; } if(isempty(enddatecomparestring)){ alert("enddatecomparestring不能为空"); return; } var flag = false; var startflag = (datecompare(startdatecomparestring, startdatestring) < 1); var endflag = (datecompare(enddatecomparestring, enddatestring) > -1); if(startflag && endflag){ flag = true; } return flag; }; function isempty(str){ if(str == '' || str == null || str == undefined){ return true; } return false; }