这可能看起来像一个愚蠢的问题,但我有一个相当困难的时间,了解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片段可以在打字稿中正常运行而无需更改代码...
答案 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将其所有数据存储为字符串。
您应该通过使用返回的字符串创建一个新的日期来解析字符串。