比较javascript中的时间戳

时间:2018-07-26 19:32:37

标签: javascript jquery timestamp

我尝试将来自服务器的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请求?

1 个答案:

答案 0 :(得分:2)

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