javascript日期比较不起作用,即使在控制台中也是如此。

12 浏览
0 Comments

javascript日期比较不起作用,即使在控制台中也是如此。

我遇到了一个关于javascript日期比较的问题。我可以在控制台输出这些对象,一切看起来都没问题,但它们总是被评估为false。\nvar date1 = new Date(\'2013\',\'01\',\'01\');\nvar date2 = new Date(\'2015\',\'01\',\'01\');\nconsole.log(\"date1=\" + date1);\nconsole.log(\"date2=\" + date2);\nconsole.log(\"date1 > date2\" + date1 > date2);\nconsole.log(\"date1 < date2\" + date1 < date2);\n>>date1=Fri Feb 01 2013 00:00:00 GMT-0500 (EST)\n>>date2=Sun Feb 01 2015 00:00:00 GMT-0500 (EST)\n>>false\n>>false

0
0 Comments

在JavaScript中,进行日期比较时可能会出现问题。即使在控制台中,使用JavaScript的日期对象进行比较也会出现问题。这个问题的出现是由于操作符优先级问题所导致的。

操作符优先级决定了操作符的计算顺序。具有更高优先级的操作符会先被计算。在这个问题中,将一个包含"date1 > date2"的字符串和date1进行比较,并将结果与date2进行比较:

"date1 > date2" + date1 > date2

在这个表达式中,字符串"date1 > date2"会先与date1相加,然后再与date2进行比较。

正确的做法是将字符串"date1 > date2"和date1与date2进行分开的比较:

"date1 > date2" + (date1 > date2)

此外,直接比较日期对象也是不正确的做法。

解决这个问题的方法是使用日期对象的getTime()方法,将日期对象转换为时间戳进行比较。通过比较时间戳,可以准确地判断日期的大小。下面是解决这个问题的示例代码:

var date1 = new Date("2021-01-01");
var date2 = new Date("2021-01-02");
var timestamp1 = date1.getTime();
var timestamp2 = date2.getTime();
if (timestamp1 > timestamp2) {
    console.log("date1 is greater than date2");
} else if (timestamp1 < timestamp2) {
    console.log("date1 is less than date2");
} else {
    console.log("date1 is equal to date2");
}

通过将日期对象转换为时间戳,可以正确地比较日期的大小。这样可以避免由于操作符优先级问题导致的比较错误。

0