首页 > 解决方案 > 比较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 请求进行比较?

标签: javascriptjquerytimestamp

解决方案


您应该将 .getTime() 结果存储到本地存储中,然后将其与您当前的 date.getTime() 进行比较,它会以毫秒为单位为您提供结果,因此您必须将其除以 1000。


推荐阅读