我正在尝试在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);
}
}
答案 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);
}
}