date.getTime()不是一个函数,未定义



它正在在Android和浏览器上工作,并且正在iOS(离子视图和设备)上工作。我将日期保存在我的本地存储(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是通过此类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

之类的东西

我不明白为什么突然而默默停止工作。以及如何纠正它,因为元素是元素和归档的旧值是 new Date(...)!在过去的2周中,本节没有更改代码。

编辑:我改用(new Date(metadata_stored.date)).getTime()解决了它。但是我仍然不知道为什么它无缘无故停止工作 ...

在本地存储中,一切都存储为字符串。

这意味着您应该使用(new Date(metadata_stored.date)).getTime(),因为metadata_stored.datestring,而不是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);

最新更新