将日期字符串与jquery中的日期对象进行比较

时间:2010-03-11 15:29:27

标签: javascript jquery date time

我已经传递了一个如下所示的日期字符串:

Thu%20Mar%2011%202010%2015%3A09%3A11%20GMT%2B0000%20(BST)

我想将此日期与今天的日期进行比较,并希望确定上述字符串是否已经发生。由于我对jquery / javascript的了解有限,我写了这个:

var str = new Date("Thu%20Mar%2011%202010%2015%3A09%3A11%20GMT%2B0000%20(BST)");
var date = new Date();
date.setTime(date.getTime());
if (date > str) {
  alert('This date has passed');
} else {
  alert('This date has NOT passed');
}

然而,这总是会返回第二个结果,即使日期字符串已经过去了(从拍摄时间开始约20分钟前)。我哪里错了

3 个答案:

答案 0 :(得分:3)

  1. 你需要取消字符串:

    var then = new Date(decodeURIComponent("Thu ... "));
    
  2. 没有必要像这样设置新的日期实例时间 - 这没有任何作用:

    d.setTime(d.getTime());
    
  3. 您需要比较每个日期对象的getTime()返回的值

    var then = new Date(decodeURIComponent("Thu ... "));
    var now = new Date();
    if (now.getTime() > then.getTime()) { ... }
    
  4. 已修改以将unescape更改为decodeURIComponent

答案 1 :(得分:0)

如果你发出警报(str),它会返回什么?也许它在处理编码时遇到了麻烦,它正在返回一个未定义的东西。在创建日期之前,也许做unescape会有所帮助。

答案 2 :(得分:0)

您不能将类似的字符串传递给Date构造函数。传递该字符串会使其返回当前日期/时间,并且由于之后创建了date变量,因此它有可能比str变量至少大1ms。

确保将可解析的字符串传递给Date构造函数,它必须采用Date.parse

可解析的格式