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);と を取得したら、 getHoursendDate = setDateTime(end);メソッドを使用して、午前 2 時または午後 6 時より前か後かを判断できます。

NB、おそらく時間 < 6 かどうかを確認する必要があります。そのため、1 日追加しendDate.setDate(endDate.getDate() + 1);ます (そうでない場合、終了日は開始日より前になります。:-)

于 2013-02-21T17:27:13.977 に答える