JS日期减法返回NaN

时间:2020-07-06 02:30:53

标签: javascript date nan

我有两个存储日期的变量,我正在尝试减去它们。

我已经打印出了值和减法,但是我不知道这里发生了什么。

代码

var dateRan = new Date().toLocaleString("en-US", {timeZone: "America/New_York"});   
  console.log(
  "date1 is "+ new Date(firstDate*1000).toLocaleString("en-US", {timeZone: "America/New_York"})
  + " and date2 is "+ dateRan
  + " and date1 - date2 is "+ Math.abs((new Date(firstDate*1000)-dateRan)));
        

               

从日志中:

 date1 is  7/5/2020, 10:44:37 PM and date2 is 7/5/2020, 10:22:30 PM and date1 - date2 is NaN

我本可以发誓这在几周前就可以正常工作-我不确定发生了什么变化。

1 个答案:

答案 0 :(得分:1)

dateRan是一个字符串;具体来说,新的Date()由toLocaleString()转换为String。

一个对象减去一个字符串会产生Nan。

一个对象加一个字符串产生一个字符串。这会产生奇怪的结果。

var dateOne = new Date().toLocaleString("en-US", {timeZone: "America/New_York"});
var dateTwo = new Date();
console.log(dateOne - dateTwo); // NaN
console.log(dateOne + dateTwo); // 7/5/2020, 10:47:01 PMSun Jul 05 2020 22:47:12 GMT-0400 (Eastern Daylight Time)

console.log(new Date() - new Date());  // 0
console.log(new Date() + new Date());  // Sun Jul 05 2020 22:52:51 GMT-0400 (Eastern Daylight Time)Sun Jul 05 2020 22:52:51 GMT-0400 (Eastern Daylight Time)
相关问题