6

var open_time と var close_time の 2 つの時刻の間に var check_val をチェックしたい

var open_time  = "23:30";
var close_time = "06:30";
var check_val  ="02:30";
if(Date.parse ( check_val ) > Date.parse ( open_time ) && Date.parse ( check_val ) < Date.parse ( close_time )){
    var flag=1;
} else { 
    var flag=2
}

結果は常に他の部分です

4

2 に答える 2

4

時間を保持する独自のオブジェクトを作成し、それを使用する関数を作成できます。

var Time = function(timeString) {
    var t = timeString.split(":");
    this.hour = parseInt(t[0]);
    this.minutes = parseInt(t[1]);
    this.isBiggerThan = function(other) { 
        return (this.hour > other.hour) || (this.hour === other.hour) && (this.minutes > other.minutes);
    };
}

var timeIsBetween = function(start, end, check) {
    return (start.hour <= end.hour) ? check.isBiggerThan(start) && !check.isBiggerThan(end)
    : (check.isBiggerThan(start) && check.isBiggerThan(end)) || (!check.isBiggerThan(start) && !check.isBiggerThan(end));    
}

var openTime = new Time("23:30");
var closeTime = new Time("06:30");
var checkTime = new Time("02:30");

var isBetween  = timeIsBetween(openTime, closeTime, checkTime);
于 2014-07-04T15:20:36.503 に答える
4

Date.parse()RFC2822またはISO8601形式の日付を受け入れます。

あなたの場合、常に返されますNaN

Date.parse("23:30"); // NaN

適切な日付形式を使用すると、期待どおりに機能します。

var open_time = Date.parse("2011-10-09T23:30");
var close_time = Date.parse("2011-10-10T06:30");
var check_val = Date.parse("2011-10-10T02:30");

if( check_val > open_time && check_val < close_time ) {
    var flag=1;
} else { 
    var flag=2
}
于 2014-07-04T12:02:28.063 に答える