两个相同的 JavaScript 日期不相等
Posted
技术标签:
【中文标题】两个相同的 JavaScript 日期不相等【英文标题】:Two identical JavaScript dates aren't equal 【发布时间】:2013-03-06 09:51:03 【问题描述】:当我创建两个相同的 javascript Date
对象然后比较它们时,它们似乎不相等。如何测试两个 JavaScript 日期是否具有相同的值?
var date1 = new Date('Mon Mar 11 2013 00:00:00');
var date2 = new Date('Mon Mar 11 2013 00:00:00');
console.log(date1 == date2); //false?
JS Fiddle available here
【问题讨论】:
另请查看this 要查看两个日期是否相等,您可以使用+a == +b
或!(a - b)
,但这可能有点模糊。不要将随机日期字符串的解析留给 Date 构造函数,要么提供符合标准的字符串(尚未始终支持),要么提供每个 ECMA-262 的值。
【参考方案1】:
出现this has been addressed already。
要检查日期是否相等,必须将它们转换为其原语:
date1.getTime()=== date2.getTime()
//true
【讨论】:
【参考方案2】:首先,您在这里比较参考文献时犯了一个严重的错误。看看这个:
var x = a:1;
var y = a:1;
// Looks like the same example huh!
alert (x == y); // It says false
在这里,虽然对象看起来相同,但它们在内存中拥有不同的插槽。 引用只存储对象的地址。因此,两个引用是不同的。
所以现在,我们必须比较这些值,因为您知道参考比较在这里不起作用。 你可以这样做
if (date1 - date2 == 0)
// Yep! Dates are equal
else
// Handle different dates
【讨论】:
很好的答案 - 特别是因为我发现 date.GetTime() 具有误导性(表明它会给我时间(即使我知道没有时间对象))【参考方案3】:我在 for 循环中比较了多种值,因此无法通过减法来评估它们,而是在比较之前将值转换为字符串
var a = [string1, date1, number1]
var b = [string2, date2, number2]
for (var i in a)
if(a.toString() == b.toString())
// some code here
【讨论】:
以上是关于两个相同的 JavaScript 日期不相等的主要内容,如果未能解决你的问题,请参考以下文章
Javascript和datediff mysql中日期之间的日期差异不相等