2

データベースに文字列として2回フォーマットされています。それぞれ、午前8時30分と午後9時のフォーマットです。Javascriptを使用して、現在の時刻を取得し、2回の範囲内にあるかどうかを確認したくありません。これをどうやってやるの?

4

2 に答える 2

2

開始時刻、終了時刻、および現在時刻を JavaScript の Date オブジェクトに変換し、start <= current < end. 開始日が終了日よりも前になると、注意が必要です。

// The un-important bits
var d0 = new Date("01/01/2001 " + "8:30 AM");
var d1 = new Date("01/01/2001 " + "9:00 PM");
var d = new Date("01/01/2001");
d.setHours(new Date().getHours());
d.setMinutes(new Date().getMinutes());

// For testing
console.log(d0, d, d1);

// The important bit
console.log(
    d0 < d1
        ? (d0 <= d && d < d1)
        : (d1 <= d && d < d0) == false
);
于 2012-06-29T21:00:55.600 に答える
1

このような?

function validNow ( from, until ) {
    var toTime= function ( str ) {
        var match = str.match(/^(\d+):(\d+)\s*([AP])/);
        if ( !match ) throw "str has wrong format";
        return match[1] * 60 + +match[2] + (match[3] == 'P' ? 720 : 0);
    };

    var d= new Date();           
    var current= d.getHours() * 60 + d.getMinutes();
    console.log(current, toTime(until));
    return current >= toTime(from) && current <= toTime(until);
}

console.log(validNow('8:30PM', '10:11PM'));
于 2012-06-29T21:03:41.727 に答える