如果日期时间在一个范围内,如何检查它?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/endRangereplace(/-/g,“/”)