本地存储返回无效的日期格式
local storage returning invalid format of date
$localStorage.doctorDateTime.push({
fullDate : new Date(doctorDateTime)
});
我在新日期中传递了日期字符串,然后将其保存到本地存储,但是当我从本地存储中检索它时,它显示了这种格式:
2015-01-01T13:41:18.300Z
while if console.log(doctorDateTime)。它显示正确的日期字符串
这就是当您执行 ( new Date() ).toString()
时会发生的情况,它是日期的字符串表示形式,因为它在存储在本地存储中时会转换为字符串。
改为存储时间戳,它是一个代表距纪元的毫秒数的数字,而不是对象
$localStorage.doctorDateTime.push({
fullDate : ( new Date(doctorDateTime) ).getTime()
});
本地存储的功能仅限于处理字符串 key/value 对。
有些浏览器会存储对象,但这不是你可以依赖的东西,你应该存储字符串。最简单的方法是存储时间戳,然后在从本地存储获取日期对象时通过 new Date
运行 那个时间戳。
localStorage 存储的数据只是字符串。如果您尝试存储非字符串类型的内容,则会发生隐式类型强制转换。
但是,它看起来取决于您正在使用的某些 lib 实现,因为您得到的行为类似于 Date.prototype.toISOString()
, while following code behaves like Date.prototype.toString()
:
localStorage.setItem("fullDate", new Date(doctorDateTime));
在设置为 localStorage 之前,您最好将 Date
对象显式转换为所需格式的字符串。
但是,您仍然可以通过 ISO time string:
取回 Date
对象
var str = '2015-01-01T13:41:18.300Z';
var time = new Date(str); // you got the object back!
如果您将对象传递给本地存储,它会首先对您的对象JSON.stringify执行,然后将其存储到本地存储。所以当你下次检索它时,它会给你日期对象的字符串值。尝试执行 JSON.stringify(new Date()) 您将获得日期字符串。这与您下次获取时得到的字符串相同。
最佳解决方案是在将日期存储到本地存储时将其转换为时间戳。并在从本地存储中获取时将其转换为 Date 对象。
LocalStorage 只支持文本。所以它总是会在存储之前对你的对象执行JSON.stringify。
$localStorage.doctorDateTime.push({
fullDate : new Date(doctorDateTime)
});
我在新日期中传递了日期字符串,然后将其保存到本地存储,但是当我从本地存储中检索它时,它显示了这种格式:
2015-01-01T13:41:18.300Z
while if console.log(doctorDateTime)。它显示正确的日期字符串
这就是当您执行 ( new Date() ).toString()
时会发生的情况,它是日期的字符串表示形式,因为它在存储在本地存储中时会转换为字符串。
改为存储时间戳,它是一个代表距纪元的毫秒数的数字,而不是对象
$localStorage.doctorDateTime.push({
fullDate : ( new Date(doctorDateTime) ).getTime()
});
本地存储的功能仅限于处理字符串 key/value 对。
有些浏览器会存储对象,但这不是你可以依赖的东西,你应该存储字符串。最简单的方法是存储时间戳,然后在从本地存储获取日期对象时通过 new Date
运行 那个时间戳。
localStorage 存储的数据只是字符串。如果您尝试存储非字符串类型的内容,则会发生隐式类型强制转换。
但是,它看起来取决于您正在使用的某些 lib 实现,因为您得到的行为类似于 Date.prototype.toISOString()
, while following code behaves like Date.prototype.toString()
:
localStorage.setItem("fullDate", new Date(doctorDateTime));
在设置为 localStorage 之前,您最好将 Date
对象显式转换为所需格式的字符串。
但是,您仍然可以通过 ISO time string:
取回Date
对象
var str = '2015-01-01T13:41:18.300Z';
var time = new Date(str); // you got the object back!
如果您将对象传递给本地存储,它会首先对您的对象JSON.stringify执行,然后将其存储到本地存储。所以当你下次检索它时,它会给你日期对象的字符串值。尝试执行 JSON.stringify(new Date()) 您将获得日期字符串。这与您下次获取时得到的字符串相同。
最佳解决方案是在将日期存储到本地存储时将其转换为时间戳。并在从本地存储中获取时将其转换为 Date 对象。
LocalStorage 只支持文本。所以它总是会在存储之前对你的对象执行JSON.stringify。