从本地存储保存和检索日期

时间:2015-04-14 14:03:46

标签: javascript typescript local-storage

这可能看起来像一个愚蠢的问题,但我有一个相当困难的时间,了解Typescript。 我有以下代码:

var date = new Date();
window.localStorage.setItem("date", date);

如您所见,我今天会生成日期并通过本地存储进行存储。 现在我想在另一个函数中检索这个值,为它添加7天,再次存储它,并在一个警告框中显示新值。

var date = window.localStorage.getItem("date");
date.setDate(date.getDate() + 7);
window.localStorage.setItem("date", date);
alert(date);

当我运行此代码时,它会不断告诉我Undefined is not a function第二个代码块的第二个规则(可能是.getDate()函数)。

有谁知道我可能做错了什么?我认为这个简单的javascript片段可以在打字稿中正常运行而无需更改代码...

3 个答案:

答案 0 :(得分:7)

放入localStorage的所有内容都存储为字符串。您的日期最初是一个对象。从localStorage获取值后,需要将字符串转换回对象。

var date = window.localStorage.getItem("date");
// Initialize the date object as a date object again here
date = new Date(date);
date.setDate(date.getDate() + 7);

答案 1 :(得分:1)

您应该将时间戳存储在localStorage中,然后检索它,创建一个带有该时间戳的新日期,添加7天,然后再次存储:

var date1 = new Date();
window.localStorage.setItem("date", date.getTime());

var date2 = new Date(window.localStorage.getItem("date"));
date2.setDate(date2.getDate() + 7);
window.localStorage.setItem("date", date2.getTime());
alert(date2);

答案 2 :(得分:0)

如果您执行以下操作

var date = new Date();
window.localStorage.setItem("date", date);
var date1 = window.localStorage.getItem("date");
console.log(date1)

您会发现date1是一个字符串。这是因为localStorage将其所有数据存储为字符串。

您应该通过使用返回的字符串创建一个新的日期来解析字符串。