我设置本地存储的代码如下:
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小时后,我运行脚本,但本地存储没有重新编码
为什么不删除?
console.log(now)和console.log(expired)的结果如下:
2017年8月9日星期三17:41:13 GMT + 0700(俄罗斯TZ 6标准时间)
2017-08-09T10:29:21.933Z
似乎格式不同。也许这是一个问题
答案 0 :(得分:1)
过期是JSON格式(对于日期)。更好的是,您可以使用
将“now”转换为相同的格式composer update --no-scripts
您可以使用>比较'now'和'expired'或者<或==等。
答案 1 :(得分:0)
如果要与> < =
进行比较,则应在Date对象的getTime()
上运行它。
所以用你拥有的字符串构造两个日期,然后比较它们:
if(now.getTime() > expired.getTime())
我现在害怕你将String与Date对象进行比较。
答案 2 :(得分:0)
JSON不支持Date
个对象,因此当您JSON.stringify
将数据放入LocalStorage时,日期会变为字符串。
要将它们重新转换为正确的Date
个对象,请将它们传递给Date
构造函数(例如new Date(yourString);
),或者使用像Moment.js这样的库。