如果日期时间在一个范围内,如何检查它?YYYY-MM-DD HH:MM:SS格式,jquery或javascript格式

如果日期时间在一个范围内,如何检查它?YYYY-MM-DD HH:MM:SS格式,jquery或javascript格式,javascript,jquery,date,datetime,timestamp,Javascript,Jquery,Date,Datetime,Timestamp,给定: start range: 2016-01-01 21:00:00 end range: 2016-02-29 23:59:59 inputed time: 2016-02-03 01:00:00 if(checkdate()== true) { if(checktime()== true) { alert('yes'); } else { alert('no'); } } else { alert('no'); } 我

给定:

start range: 2016-01-01 21:00:00
end range: 2016-02-29 23:59:59

inputed time: 2016-02-03 01:00:00
if(checkdate()== true)
{
   if(checktime()== true)
   {
     alert('yes');
   }
   else
   {
     alert('no');
   }

}
else
{
   alert('no');
}
我找不到任何一次检查YYYY-MM-DD HH:MM:SS格式的代码。 我只找到检查日期或时间的代码

所以我把两者结合起来做了类似的事情

伪代码:

start range: 2016-01-01 21:00:00
end range: 2016-02-29 23:59:59

inputed time: 2016-02-03 01:00:00
if(checkdate()== true)
{
   if(checktime()== true)
   {
     alert('yes');
   }
   else
   {
     alert('no');
   }

}
else
{
   alert('no');
}
我刚刚意识到这根本不起作用,因为根据我给出的例子

checkdate()的值为true,但checktime()的值为false,因为01:00:00不在21:00:00-23:59:59之间,但它应该为true,因为开始和结束范围是不同的天

我该怎么做?

类似于

var startRange = (new Date("2016-01-01 21:00:00".replace(/-/g, '/')).getTime()),
    endRange = (new Date("2016-02-29 23:59:59".replace(/-/g, '/')).getTime()),
    input = (new Date("2016-02-03 01:00:00".replace(/-/g, '/')).getTime());

if(input >= startRage && input <= endRange) {}
var startRange=(新日期(“2016-01-01 21:00:00”。替换(/-/g,“/”).getTime()),
endRange=(新日期(“2016-02-29 23:59:59”。替换(/-/g,“/”).getTime()),
输入=(新日期(“2016-02-03 01:00:00”。替换(/-/g,“/”).getTime());

如果(输入>=startRage&&input您可以直接比较日期对象。如果需要,将字符串转换为格式正确的日期字符串

var beginRange = new Date(".....");
var endRange = new Date(".....");

var myDate = new Date(".....");

if (myDate > beginRange && myDate < endRange)
...
var beginRange=新日期(“…”);
var endRange=新日期(“…”);
var myDate=新日期(“…”);
如果(myDate>beginRange&&myDate
创建一个函数
checkdate
,用于解析日期并进行比较

function checkdate(_input, _start, _end) {
    function parseDate(x) {
        if (typeof x === 'string') {
            var parts = x.split(/[-: ]/g).map(Number);
            x = new Date(parts[0], parts[1]-1, parts[2], parts[3], parts[4], parts[5]);
        }
        return x;
    }

    _input = parseDate(_input);
    _start = parseDate(_start);
    _end   = parseDate(_end);

    return _input > _start && _input < _end;
}
函数检查日期(\u输入,\u开始,\u结束){
函数解析日期(x){
如果(x的类型=='string'){
var parts=x.split(/[-:]/g).map(编号);
x=新日期(零件[0],零件[1]-1,零件[2],零件[3],零件[4],零件[5]);
}
返回x;
}
_输入=解析日期(_输入);
_开始=解析日期(_start);
_end=parseDate(_end);
返回输入>开始和结束;
}


为了好玩,这里有一个高尔夫版本

function checkdate() {
    var y = [].slice.call(arguments).map(function(x) {
        var arr = [null].concat(x.split(/[-: ]/g).map(Number)); arr[2]--;
        return new (Function.prototype.bind.apply(Date, arr));
    });
    return y[0] > y[1] && y[0] < y[2];
}
函数检查日期(){
var y=[].slice.call(参数).map(函数(x){
var arr=[null].concat(x.split(/[-:]/g).map(Number));arr[2]--;
返回新的(Function.prototype.bind.apply(Date,arr));
});
返回y[0]>y[1]&y[0]
以下是工作解决方案。您需要将“-”替换为“/”,然后转换为日期

var startDate = new Date("2016-01-01 21:00:00".replace(/-/g, '/'));
var endDate = new Date("2016-02-29 23:59:59".replace(/-/g, '/'));

var input = new Date("2016-02-03 01:00:00".replace(/-/g, '/'));

if(input <= endDate && input >= startDate) {
        alert("success");
    }
        else  {
            alert("Failure");
        }
var startDate=新日期(“2016-01-01 21:00:00”。替换(/-/g,“/”);
var endDate=新日期(“2016-02-29 23:59:59”。替换(/-/g,“/”);
var输入=新日期(“2016-02-03 01:00:00”。替换(/-/g,“/”);
如果(输入=起始日期){
警惕(“成功”);
}
否则{
警报(“故障”);
}
考虑使用正则表达式:

var date = "2016-01-01 21:00:00";
var pattern = /\d{4}\-\d{2}\-\d{2}\s\d{2}:\d{2}:\d{2}/;
var correct_match = date.match(pattern);

if (correct_match) {
  alert('yes');
}
else {
  alert('no');
}

由于您使用的是合理的日期时间格式,因此可以只使用字符串比较:

$ node
> rangeStart="2016-01-01 21:00:00"
'2016-01-01 21:00:00'
> rangeEnd="2016-02-29 23:59:59"
'2016-02-29 23:59:59'
> inputDate="2016-02-03 01:00:00"
'2016-02-03 01:00:00'
> if (rangeStart <= inputDate && inputDate <= rangeEnd) console.log("input date is in range")
input date is in range
$node
>rangeStart=“2016-01-01 21:00:00”
'2016-01-01 21:00:00'
>rangeEnd=“2016-02-29 23:59:59”
'2016-02-29 23:59:59'
>inputDate=“2016-02-03 01:00:00”
'2016-02-03 01:00:00'

>if(rangeStart)如果您提供有效的ISO日期字符串并比较
date
objects,则非常简单。不支持跨浏览器使用有效的日期字符串…格式。例如,在firefox中尝试使用该格式,则所有日期都将
invalid date
returned@charlietfl好的,如果出现问题startRange/endRange
replace(/-/g,“/”)