【问题标题】:How to determine if the specific time is between given time range in javascript如何确定特定时间是否在javascript中的给定时间范围之间
【发布时间】:2014-07-04 11:52:17
【问题描述】:

我想在两个时间 var open_time 和 var close_time 之间检查 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
}

结果总是其他部分

【问题讨论】:

  • 你是否暗示“06:30”是“23:30”的第二天的时间?

标签: javascript time date-comparison datetime-conversion datetime-comparison


【解决方案1】:

Date.parse() 接受 RFC2822ISO8601 格式的日期。

在你的情况下,它总是返回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
}

【讨论】:

    【解决方案2】:

    您可以创建自己的对象来保持时间,然后编写一个使用它的函数:

    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);
    

    【讨论】:

      猜你喜欢
      • 2018-08-17
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      • 2016-02-14
      • 1970-01-01
      • 2011-09-08
      相关资源
      最近更新 更多