我需要验证用户选择的时间,开始日期必须大于早上6点且小于结束日期,且不得超过次日凌晨2点。
虽然我没有将日期作为输入,但我认为我应该将日期添加到选择的时间进行比较,这是实现它的最佳方式还是有更聪明的方法?
这是我到目前为止所能想到的
function compareTimes(start,end){
var t1 = new date();
var t2 = new date();
var starttime = t1 + " " + start;
if (end >= '00:00'){
t2.setDate(t2.getDate()+1);
}
var endtime = t2 + " " + end;
if(Date.parse ( endtime ) > Date.parse ( starttime )){
alert ("greater than");
return true
}
}
答案 0 :(得分:1)
试试这个库。差异功能应该适合您。 http://momentjs.com
答案 1 :(得分:0)
以下函数将您给出的时间字符串附加到日期,并将其作为新的Date对象返回。如果您没有通过日期,它将使用今天的日期。
function setDateTime(timeString, date) {
var result = (date ? new Date(date) : new Date())
, match = /(\d+):(\d+)/.exec(timeString)
;
result.setHours(Number(match[1]), Number(match[2]), 0, 0);
return result;
}
获得startDate = setDateTime(start);
和endDate = setDateTime(end);
之后,您可以使用getHours方法确定是在上午2点或下午6点之前或之后。
N.B。你应该检查一下小时< 6,就这样,添加一天(endDate.setDate(endDate.getDate() + 1);
,否则你的结束日期将在你的开始日期之前。: - )