使用的日期比较错误>;=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设置了本地时间,这可能会产生意外的结果。