这是我的javascript代码:
var prevDate = new Date('1/25/2011'); // the string contains a date which
// comes from a server-side script
// may/may not be the same as current date
var currDate = new Date(); // this variable contains current date
currDate.setHours(0, 0, 0, 0); // the time portion is zeroed-out
console.log(prevDate); // Tue Jan 25 2011 00:00:00 GMT+0500 (West Asia Standard Time)
console.log(currDate); // Tue Jan 25 2011 00:00:00 GMT+0500 (West Asia Standard Time)
console.log(prevDate == currDate); // false -- why oh why
请注意,两个日期相同,但使用==
进行比较表示它们不相同。为什么呢?
答案 0 :(得分:8)
我认为您不能使用==
来比较JavaScript中的日期。这是因为它们是两个不同的对象,因此它们不是“对象相等的”。 JavaScript允许您使用==
比较字符串和数字,但所有其他类型都将作为对象进行比较。
那是:
var foo = "asdf";
var bar = "asdf";
console.log(foo == bar); //prints true
foo = new Date();
bar = new Date(foo);
console.log(foo == bar); //prints false
foo = bar;
console.log(foo == bar); //prints true
但是,您可以使用getTime
方法获取可比较的数值:
foo = new Date();
bar = new Date(foo);
console.log(foo.getTime() == bar.getTime()); //prints true
答案 1 :(得分:1)
尝试使用日期方法valueOf()
比较它们。这将比较它们下面的原始值而不是比较日期对象本身。
实施例:
console.log(prevDate.valueOf() == currDate.valueOf()); //Should be true
答案 2 :(得分:1)
console.log(prevDate.getTime() === currDate.getTime());
(如nss正确指出,我现在看到了) 为什么我在这里使用===?看看Which equals operator (== vs ===) should be used in JavaScript comparisons?
答案 3 :(得分:1)
不要使用==运算符直接比较对象,因为只有当两个比较变量都指向同一个对象时,==才会返回true,首先使用对象valueOf()函数获取对象值然后比较它们 即
var prevDate = new Date('1/25/2011');
var currDate = new Date('1/25/2011');
console.log(prevDate == currDate ); //print false
currDate = prevDate;
console.log(prevDate == currDate ); //print true
var currDate = new Date(); //this contain current date i.e 1/25/2011
currDate.setHours(0, 0, 0, 0);
console.log(prevDate == currDate); //print false
console.log(prevDate.valueOf() == currDate.valueOf()); //print true
答案 4 :(得分:0)
JS使用>
和<
运算符比较日期。如果比较返回false,则它们是相等的。