为什么我在safari浏览器中获得NAN?

时间:2015-08-04 14:13:10

标签: javascript jquery safari

我正在尝试在safari浏览器中获得两次差异。它在chrome中工作正常。但在safari上我得到 NAN 。当我运行应用程序时,我今天保存第一次日期。第二次运行我的应用程序时,我得到了保存日期和现在日期的区别。在chrome中给出了正确的结果。但是在safari中失败了为什么? 这是我的代码 https://jsfiddle.net/87mw2ag9/1/

var todaydate = new Date();
var datetime = todaydate.getMonth() + 1 + "-" + todaydate.getDate() + "-" + todaydate.getFullYear() + " " + todaydate.getHours() + ":" + todaydate.getMinutes() + ":" + todaydate.getSeconds();

if (localStorage.getItem("getSinkdate") == null || localStorage.getItem("getSinkdate") == '') {
    alert('empty')
    localStorage.setItem("getSinkdate", datetime);
} else {
    var datetimeLocal = window.localStorage.getItem("getSinkdate")
    var d1 = new Date(datetime);
    var d2 = new Date(datetimeLocal);
    alert((d2.getTime() - d1.getTime()) / (1000 * 3600))
    alert((d2.getTime() - d1.getTime()) / (1000 * 3600) > 12)
    if ((d2.getTime() - d1.getTime()) /(1000*3600)> 12)
    {
        alert((d2.getTime() - d1.getTime())/ (1000 * 3600)); 
        localStorage.setItem("getSinkdate", datetime);
    }
}

2 个答案:

答案 0 :(得分:0)

将您的日期存储为Epoch(从1970年1月1日到现在为止)。通过执行以下操作创建存储/比较日期:

var datetime = new Date().getTime();

当您调用存储的属性时,您可以通过执行以下操作从值中获取日期:

var d1 = new Date(datetime);

您的问题正在发生,因为您在下面传递的日期字符串无效:

var d1 = new Date(datetime);
var d2 = new Date(datetimeLocal);

答案 1 :(得分:0)

我没有改变你的逻辑。



"use strict";

var datetime = new Date().getTime();

//  localStorage.removeItem("getSinkdate");

if (localStorage.getItem("getSinkdate") == null || localStorage.getItem("getSinkdate") == '') {

    console.log('empty');
    localStorage.setItem("getSinkdate", datetime);

} else {

    var datetimeLocal = parseInt(window.localStorage.getItem("getSinkdate"));

    var d1 = new Date(datetime);
    var d2 = new Date(datetimeLocal);
    console.log("datetime: " + d1);
    console.log("datetimelocal: " + d2);

    if ((d2.getTime() - d1.getTime()) / (1000 * 3600) > 12) {
        console.log((d2.getTime() - d1.getTime()) / (1000 * 3600));
        localStorage.setItem("getSinkdate", datetime);
    }
}