【问题标题】:Date.gettime() is not a function, undefinedDate.gettime() 不是函数,未定义
【发布时间】:2018-05-14 15:28:23
【问题描述】:

它在 android 和浏览器上运行,WAS 在 iOS 上运行(离子视图和设备)。我正在本地存储 (import { Storage } from '@ionic/storage';) 中保存一个日期,然后将其与另一个日期进行比较

这就是我所做的并且在任何地方都在工作,但突然,而不是 ionic 视图下的 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

我不明白为什么它会突然安静地停止工作。以及如何更正它,因为 metadate.date 是 filedate 的旧值,而 filedate 是 new Date(...) !过去 2 周,此部分中的代码未发生任何更改。

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

【问题讨论】:

    标签: ios date typescript datetime ionic-framework


    【解决方案1】:

    在本地存储中,所有内容都存储为字符串。

    这意味着您应该使用(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);
    

    【讨论】:

    • 知道为什么它以前可以工作,为什么它只在 iOS 上停止工作吗? ._.
    • 类型杂耍可能发生了微妙的变化(当你执行一个奇怪的赋值时,JavaScript 非常擅长将一个类型强制为另一种类型,例如 string to date) - 或者可能已经发生了变化到本地存储中用于日期的格式字符串 - 或者其他可能导致问题的东西,比如它适用于 BST 但不适用于 GMT。
    猜你喜欢
    • 1970-01-01
    • 2014-06-04
    • 2016-10-04
    • 2015-06-27
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多