JavaScript跨浏览器日期比较?

时间:2011-08-27 21:23:21

标签: javascript jquery date cross-browser

我正在尝试使用jQuery插件保存本地存储jStorage一些HTML以及该块插入本地存储的日期和时间,因此根据时间比较,如果5分钟过去,这将更新本地存储。

目前,它适用于所有浏览器,但不是,令人惊讶的是,IE8及以下版本。 IE返回NaN

您能否告诉我如何存储日期并将其与当前时间进行比较 - 跨浏览器需要5分钟?也许有几毫秒,或者所有浏览器都能识别的时间格式?

以下是代码:

$(document).ready(function() {

  var side_user_cp = $.jStorage.get("side_user_cp");
  var latest_update = new Date($.jStorage.get("latest_update")); // Here is where I get NaN with IE
  var now_date = new Date();

  if(!side_user_cp || !latest_update){ // If browser doesn't support local storage, or it first time visit, load it with AJAX
    $.get('/ajax/side_user_cp/', function(data) {
            $.jStorage.set("latest_update",now_date);
            $.jStorage.set("side_user_cp",data);
            $('#side').prepend(data);
          });
  }
  else // Browser has support, so check should it be loaded with with AJAX or from Local storage
  {
    var check_date = new Date(now_date);
    check_date.setMinutes(check_date.getMinutes()-5);

    if(check_date > latest_update) // latest_update from Loacal storage is here NaN
    {
      $.get('/ajax/side_user_cp/', function(data) {
            $.jStorage.set("latest_update",now_date);
            $.jStorage.set("side_user_cp",data);
            $('#side').prepend(data);
       });
    }
    else
    {
      $('#side').prepend(side_user_cp);
    }
});

1 个答案:

答案 0 :(得分:0)

您正在存储“日期”实例,然后将其传回日期构造函数。这可能不是你想要做的。

您可以存储原始数字时间戳:

    $.jStorage.set("latest_update", now_date.getTime());

然后通过它来构建一个新的日期是有道理的。

(请注意,这是一个猜测;我正在试图弄清楚IE8是否会因为你描述Date构造函数是否传递了Date而混淆,但是jsfiddle目前似乎有问题:/)

编辑 - nope - bogus。 ... 再次编辑但显然这很有用(??)。当我说它是“虚假”时,我的意思是IE似乎可以从另一个日期实例化一个日期。但问题是,Date对象无法成功存储在本地存储中吗?