0

我需要验证用户选择的时间,开始日期必须大于上午 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
    }
}
4

2 回答 2

1

试试这个库。差异功能应该适合您。 http://momentjs.com

于 2013-02-21T16:29:35.943 回答
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 点之后。

注意,您可能应该检查小时是否 < 6,因此,请在其中添加一天(endDate.setDate(endDate.getDate() + 1);,否则您的结束日期将早于您的开始日期。:-)

于 2013-02-21T17:27:13.977 回答