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

问题描述 投票:0回答:3

这似乎是一个愚蠢的问题,但我很难理解 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 可以在不更改代码的情况下在打字稿中运行良好......

javascript typescript local-storage
3个回答
26
投票

放入 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);

2
投票

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

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

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

0
投票

如果您执行以下操作

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

你会发现

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

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

© www.soinside.com 2019 - 2024. All rights reserved.