它正在开发Android和浏览器以及在iOS上工作的WAS(离子视图和设备)。我在本地存储(import { Storage } from '@ionic/storage';
)中保存日期,然后将其与另一个日期进行比较
这就是我的工作并且在任何地方工作但是 突然 ,而不是离子视图下的ios。最后一次测试最多在2周前进行,并按预期工作!
this.storage.get(filename).then((metadata_stored) => {
if (metadata_stored && metadata_stored.date && metadata_stored.date.getTime() === filedate.getTime())
//do something
我得到TypeError: metadata_stored.date.getTime() is not a function; metadata_stored.date.getTime is undefined
。
归档是通过类似filedate: Date = new date("2017-10-14T15:44:48+02:00")
(据称是ISO)的东西创建的。然后它会保存在我的本地存储空间中:this.storage.set(filename, { /* ... */ , date: filedate })
如果我显示metadata_stored.data,我会得到类似2017-08-13T13:44:10.000Z
我不明白为什么它突然而且默默地停止工作。以及如何纠正它,因为metadate.date是归档的旧值,归档是new Date(...)
!过去两周内,本节中没有更改任何代码。
编辑:我通过执行(new Date(metadata_stored.date)).getTime()
解决了问题。但我仍然不知道为什么它无缘无故地停止工作 ......
答案 0 :(得分:0)
在本地存储中,所有内容都存储为字符串。
这意味着应该使用(new Date(metadata_stored.date)).getTime()
因为metadata_stored.date
是string
,而不是Date
。
let a = new Date();
let b = new Date();
// 2017-11-30T18:01:01457Z object
console.log(a, typeof a);
// 2017-11-30T18:01:01457Z object
console.log(b, typeof b);
localStorage.a = a;
localStorage.b = b;
a = localStorage.a;
b = localStorage.b;
// Thu Nov 30 18:01:01 GMT+0000 (GMT Standard Time) string
console.log(a, typeof a);
// Thu Nov 30 18:01:01 GMT+0000 (GMT Standard Time) string
console.log(b, typeof b);
a = new Date(localStorage.b);
b = new Date(localStorage.a);
// 2017-11-30T18:01:01457Z object
console.log(a, typeof a);
// 2017-11-30T18:01:01457Z object
console.log(b, typeof b);