Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中比较日期?_Javascript_Date - Fatal编程技术网

如何在Javascript中比较日期?

如何在Javascript中比较日期?,javascript,date,Javascript,Date,我有以下情况: 我有一个特定的函数运行一个循环并做一些事情,错误条件可能会使它退出该循环。 我希望能够检查循环是否仍在运行 为此,我要为每个循环运行: LastTimeIDidTheLoop = new Date(); 在另一个函数中,每30秒运行一次SetInterval,我想基本上这样做: if (LastTimeIDidTheLoop is more than 30 seconds ago) { alert("oops"); } 我该怎么做 谢谢 那么: newDate = new

我有以下情况:

我有一个特定的函数运行一个循环并做一些事情,错误条件可能会使它退出该循环。 我希望能够检查循环是否仍在运行

为此,我要为每个循环运行:

LastTimeIDidTheLoop = new Date();
在另一个函数中,每30秒运行一次SetInterval,我想基本上这样做:

if (LastTimeIDidTheLoop is more than 30 seconds ago) {
  alert("oops");
}
我该怎么做

谢谢

那么:

newDate = new Date()
newDate.setSeconds(newDate.getSeconds()-30);
if (newDate > LastTimeIDidTheLoop) {
  alert("oops");
}

创建日期对象并使用setSeconds()


JS date对象在内部存储毫秒,将它们彼此相减可以正常工作:

var diffSeconds = (new Date() - LastTimeIDidTheLoop) / 1000; 
if (diffSeconds > 30)
{
  // ...
}
您可以这样做:

var dateDiff = function(fromdate, todate) {
    var diff = todate - fromdate;
    return Math.floor(diff/1000);
}
然后:

if (dateDiff(fromdate, todate) > 30){
    alert("oops");
}

它只是将30连接到末尾,例如“Sun Dec 07 2008 16:45:19 GMT-0500(EST)30”是的,你是对的!我已经用修改过的版本对它进行了更正。这不起作用,它只是将时间设置为30秒,比如“1:15:30”如果要添加30秒,则执行controlDate.setSeconds(controlDate.getSeconds()+30);
if (dateDiff(fromdate, todate) > 30){
    alert("oops");
}