Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用的日期比较错误>;=Javascript中的运算符_Javascript_Date - Fatal编程技术网

使用的日期比较错误>;=Javascript中的运算符

使用的日期比较错误>;=Javascript中的运算符,javascript,date,Javascript,Date,嗨,我正在尝试比较与今天或未来相关的对象的日期。如果是昨天和之前的,就不应该出现了。这就是条件 当我将今天的日期与new date()进行比较时,该条件应为true,但返回false,因此条件不能正常工作。这个代码怎么了 data = [ '0': {type: "recare", value: "Hello", date: "2018-06-05", ... }, '1': {type: "tocall", value: "World", date: "2018-06-13", .

嗨,我正在尝试比较与今天或未来相关的对象的日期。如果是昨天和之前的,就不应该出现了。这就是条件

当我将今天的日期与
new date()
进行比较时,该条件应为true,但返回false,因此条件不能正常工作。这个代码怎么了

data = [
   '0': {type: "recare", value: "Hello", date: "2018-06-05", ... },
   '1': {type: "tocall", value: "World", date: "2018-06-13", ... },
   '2': {type: "recare", value: "People", ...}
];

console.log(new Date(data[0].date) >= new Date())
//returns: false

    console.log(new Date(data[1].date) >= new Date())
//returns: true
为什么它返回false?对于第二个对象,它返回true,因为与今天(06-05)相比,06-13是将来的时间。

,因为新日期()也包括当前时间组件。您可以使用new Date()来修复它。setHours(0,0,0,0)

数据=[
{类型:“recare”,值:“Hello”,日期:“2018-06-06”},
{类型:“tocall”,值:“World”,日期:“2018-06-13”},
{type:“recare”,value:“People”}
];
console.log(新日期(数据[0].Date)>=new Date().setHours(0,0,0,0))
//返回:false
console.log(新日期(数据[1].Date)>=new Date().setHours(0,0,0,0))

//返回:true
如果尝试记录前两个值,将看到不同的输出

const数据=[
{类型:'recare',值:'Hello',日期:'2018-06-05'},
{类型:'tocall',值:'World',日期:'2018-06-13'},
{type:'recare',value:'People'},
];
//这将计算到从00:00开始的日期
console.log(新日期(数据[0].Date));
//这将计算到当前时间
console.log(新日期());
//因此新日期()大于新日期(数据[0]。数据);
//所以这是错误的

console.log(新日期(数据[0].Date)>=新日期())@Sam,请尝试以下代码

var data = [
   {type: "recare", value: "Hello", date: "2018-06-05" },
   {type: "tocall", value: "World", date: "2018-06-13" },
   {type: "recare", value: "People", date: "2018-06-06"}
]

var date = new Date()
console.log(date)
var year = date.getFullYear() 
var month = date.getMonth() 
var day = date.getDate()

console.log(year, month, day)

var today = new Date(year, month, day)
console.log(new Date(data[0].date) >= today) // returns false

console.log(new Date(data[0].date) == today); //returns: true

console.log(new Date(data[1].date) > today); //returns: true
输出:

Tue Jun 05 2018 22:41:27 GMT+0200 (CEST)
2018 5 5
true
false
true
Tue Aug 07 2018 02:00:00 GMT+0200 (CEST)
Tue Aug 07 2018 00:00:00 GMT+0200 (CEST)
请关注以下两行代码,因为上述提供的解决方案正是基于此

✓ 以下两个语句相互等效

console.log(new Date("2018-08-07"));
console.log(new Date(2018, 7, 7)); // month ranges from 0-11 in call to Date() contructor
输出:

Tue Jun 05 2018 22:41:27 GMT+0200 (CEST)
2018 5 5
true
false
true
Tue Aug 07 2018 02:00:00 GMT+0200 (CEST)
Tue Aug 07 2018 00:00:00 GMT+0200 (CEST)

因为
“2018-06-05”
对应于这一天的绝对第一次,而您的代码现在正在运行。因此,现在的时间大于昨晚午夜后的时间。对象中的日期不记录一天中的时间,因此它们默认为
00:00
,即昨晚午夜。@Pointy-“…并被解析为UTC。”;-)“2018-06-06”将被视为UTC,而setHours设置了本地时间,这可能会产生意外的结果。