在Javascript中确定日期平等

Jar*_*red 61 javascript equality date

我需要找出用户在Javascript中选择的两个日期是否相同.日期以字符串("xx/xx/xxxx")传递给此函数.这就是我需要的所有粒度.

这是我的代码:

        var valid = true;
    var d1 = new Date($('#datein').val());
    var d2 = new Date($('#dateout').val());
    alert(d1+"\n"+d2);
    if(d1 > d2) {
        alert("Your check out date must be after your check in date.");
        valid = false;
    } else if(d1 == d2) {
        alert("You cannot check out on the same day you check in.");
        valid = false;
    }
Run Code Online (Sandbox Code Playgroud)

将日期转换为对象后的javascript警报如下所示:

2011年1月25日星期二00:00:00 GMT-0800(太平洋标准时间)

2011年1月25日星期二00:00:00 GMT-0800(太平洋标准时间)

确定日期1是否大于日期2的测试有效.但是使用==或===运算符不会将valid更改为false.

spi*_*non 125

使用该getTime()方法.它将检查日期的数值,它将适用于大于/小于检查以及等于检查.

编辑:

if (d1.getTime() === d2.getTime())
Run Code Online (Sandbox Code Playgroud)

  • 一种更简单的方法:`if(+ d1 == + d2)` (13认同)
  • 你会惊讶于这些问题如何在多年后帮助开发人员:-) (2认同)

dev*_*com 16

如果你不想打电话getTime()只试试这个:

(a >= b && a <= b)

  • WTF?为什么这样可行,但是相等运算符却没有?感觉在哪里? (16认同)
  • 等于运算符检查引用相等性.这意味着如果两个变量引用同一个对象,它只返回true.如果创建两个Date对象(`var a = new Date(); var b = new Date();`),它们永远不会相等. (8认同)
  • 奇怪的.您可能会认为这实际上是一个在==和===之间分离的地方有意义...哦等待它的javascript.我们这里没有意义! (7认同)
  • @Towa,这是有效的,因为> =和<=运算符只适用于数字,因此他们尝试将其操作数转换为数字.为了将对象(例如Date)转换为数字,JavaScript调用valueOf()函数来获取数字表示.valueOf()返回与getTime()相同的东西:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/valueOf (6认同)
  • @ devmiles.com除了字符串,也按值进行比较,`var a ="str1"; var b ="str"+"1"; a == b // true` (4认同)
  • 这是对象所做的事情,它会检查引用. (2认同)