Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 在JS中减去2个日期_Javascript_Json_Date - Fatal编程技术网

Javascript 在JS中减去2个日期

Javascript 在JS中减去2个日期,javascript,json,date,Javascript,Json,Date,我有两个日期,我想减去差值,然后比较它,在输出上返回一个简单的命令。我把它放在jsfor循环中,然后做简单的数学运算 我的信息来自API,并从JSON响应返回以下信息: -0: Object dateTime: "2018-02-14T14:27:00.000Z" //This is what I want to use +device: Object distanceSinceLastValidCoordinate: 0 +driver: Object eventCode: 4 eventR

我有两个日期,我想减去差值,然后比较它,在输出上返回一个简单的命令。我把它放在js
for
循环中,然后做简单的数学运算

我的信息来自API,并从JSON响应返回以下信息:

-0: Object
dateTime: "2018-02-14T14:27:00.000Z" //This is what I want to use 
+device: Object
distanceSinceLastValidCoordinate: 0
+driver: Object
eventCode: 4
eventRecordStatus: 1
eventType: 1
id: "atyhJlpX9YEyMdDHG03EA2w"
+location: Object
malfunction: "None"
origin: "Automatic"
sequence: "00000000000006a8"
state: "Active"
status: "ON"
version: "0000000000046700"
我的代码是:

    for(var i=0; i < results.length; i++){
                   var stTime = results[i].dateTime; //Returns: 2018-02-14T14:27:00.000Z


                   var status = results[i].status;
                   var driver = results[i].driver.id;

                   var today = new Date(); //Returns: 2018-02-14T15:27:27.582Z

                   console.log("Today: ",today);
                   console.log("From Database: ", stTime);


                   var answerThis =  Math.abs(stTime - today); //Retuns: NULL

                   console.log("Answer: ", answerThis)



                   if((answerThis) > 6){

                       console.log("Driver "+ driver +" on "+ stTime + " Has The Status Of " + status);
                   }
                 }
              }),function(e){
                       console.error("Failed: ",e)
                   }
for(var i=0;i6){
控制台日志(“+stTime+”上的“驱动程序”+Driver+”的状态为“+Status”);
}
}
}),功能(e){
控制台。错误(“失败:”,e)
}
它从不出错,只给出一个空值

我的问题是,如何使用生成的dateTime值减去现在的时间,然后如果时间大于6小时,在if语句中显示
console.log()
info

您可以通过(new Date().getTime()-stTime.getTime())以毫秒为单位给出差值

let timeDifferenceMilliseconds = (new Date().getTime() - stTime.getTime());

let timeDifferenceHours = timeDifferenceMilliseconds / (3600*1000);

if (timeDifferenceHours > 6) {
    // Do some stuff
}
替换
var stTime=results[i].dateTime
具有
var stTime=新日期(结果[i].dateTime)

var answerThis=新日期(Math.abs(stTime-today))


减去这两个日期的毫秒数:

var stTime = new Date(results[i].dateTime);
var today = new Date();
var answerThis =  Math.abs(stTime.getTime() - today.getTime());

之后,您可以将答案转换为分钟、小时、天,以及您需要的任何时间。

这非常有效!它现在只显示超过6小时的结果,而不是返回所有结果!谢谢你的及时回复。很好,很高兴它能工作。如果(Date.now()-stTime>2.16e7)
,这可以简化为
if(Date.now()-stTime>2.16e7)。请发布一个“工作”示例。表达式
Math.abs(stTime-today)
必须返回一个数字,可以是整数或NaN。根据上下文,它不应返回null。
var stTime = new Date(results[i].dateTime);
var today = new Date();
var answerThis =  Math.abs(stTime.getTime() - today.getTime());