【问题标题】:Why expired in local storage javascript failed?为什么本地存储中过期的javascript失败了?
【发布时间】:2017-08-09 10:50:09
【问题描述】:

我的代码设置本地存储是这样的:

var now = new Date();
now.setHours(now.getHours() + 1);
var cacheData = {data: data, expired: now}
localStorage.setItem('storedData', JSON.stringify(cacheData))

我的代码检查是否过期:

var object = JSON.parse(localStorage.getItem("storedData")),
    expired = object.expired,
    now = new Date()

if(now > expired) {
    console.log('cache dihapus')
    localStorage.removeItem("storedData");
}

1小时后,我运行脚本,但本地存储没有remodev

为什么不删除?

console.log(now) 和 console.log(expired) 的结果如下:

2017 年 8 月 9 日星期三 17:41:13 GMT+0700(俄罗斯 TZ 6 标准时间)

2017-08-09T10:29:21.933Z

似乎格式不同。可能是那里的问题

【问题讨论】:

标签: javascript date time local-storage


【解决方案1】:

过期是 JSON 格式(用于日期)。更好的是,您可以使用以下方法将“现在”转换为相同的格式,

now = new Date()
now = now.toJSON()

您可以使用 > 或

【讨论】:

    【解决方案2】:

    如果您要与 > < = 进行比较,您应该在 Date 对象的 getTime() 上运行它。

    因此,使用您拥有的字符串构造两个日期,然后将它们进行比较: if(now.getTime() > expired.getTime())

    恐怕您现在正在将字符串与日期对象进行比较。

    【讨论】:

      【解决方案3】:

      JSON 不支持 Date 对象,因此当您将 JSON.stringify 数据放入 LocalStorage 时,日期会被扁平化为字符串。

      要将它们转换回正确的 Date 对象,请将它们传递给 Date 构造函数(例如 new Date(yourString);),或使用 Moment.js 之类的库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-27
        相关资源
        最近更新 更多