javascript - 比较javascript中的时间戳
问题描述
我正在尝试将来自服务器的 JSON AJAX 响应存储在浏览器localStorage
中一分钟,并通过new Date().getMinutes()
.
在$(document).ready
我尝试将 localStorage 中的时间戳与我在这样的变量中设置的当前时间戳进行比较:new Date().getMinutes().toString()
如果当前时间戳大于 localStorage 中的时间戳,那么我再次进行 AJAX 调用。
$(document).ready(function(){
var object = JSON.parse(localStorage.getItem("cache"));
if (object) {
var dateString = object.timestamp,
now = new Date().getMinutes().toString();
console.log('cache present. ' + object.timestamp + ' - checking against: ' + now + '');
if (now > dateString ) {
console.log('cache expired - refetching');
$.getJSON('cart/get', function(data) {
var object = {url: 'cart/get', response : data, timestamp: new Date().getMinutes()}
localStorage.setItem("cache", JSON.stringify(object));
});
}
return object.response;
} else {
console.log('cache not present - set it');
$.getJSON('cart/get', function(data) {
var object = {url: 'cart/get', response : data, timestamp: new Date().getMinutes()}
localStorage.setItem("cache", JSON.stringify(object));
});
}
});
这可行,但是如果用户在 8:26:57 加载页面然后在 8:27:06 重新加载它,即使一分钟还没有过去,也会发出 AJAX 请求。
我的问题是:如何在 localStorage 中设置确切的时间戳并将其与new Date().getMinutes().toString()
至少 60 秒后才发出 AJAX 请求进行比较?
解决方案
您应该将 .getTime() 结果存储到本地存储中,然后将其与您当前的 date.getTime() 进行比较,它会以毫秒为单位为您提供结果,因此您必须将其除以 1000。
推荐阅读
- amazon-cloudformation - 在创建时填充 RDS
- amazon-web-services - CORS 策略已阻止从源“S3_host_url”获取“API_Gateway_URL”的访问权限
- django - Django - 将用户活动(查询 - GET/FILTER/UPDATE/DELETE)记录到数据库
- c - 这段代码给出了分段错误
- bots - 如何禁用向已关闭 DM 的人发送消息
- c++ - 如何在 C++ 中将 char 数组转换为 FILE 类型
- snowflake-cloud-data-platform - 雪花 - 列默认值对 COPY 命令无效?
- c++ - c ++:使用运算符=调用多参数构造函数
- angular-material - 使用 AdminBSBMaterialDesign UI 而非 adminlte UI 下载最新的 ABP
- azure-active-directory - 如何使用 Sql 身份验证方法 ActiveDirectoryInteractive 启用“记住我”?