2017-11-30 16 views
0

アンドロイドとブラウザで動作し、iOS(ionic view and device)で作業しています。私はここで私は仕事だし、別の日Date.gettime()は関数ではありません。未定義です

にそれを比較する私のローカルストレージ(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)のようなものを通じて作成されます。そして、それは私のローカルストレージに保存されている:私はmetadata_stored.dataを表示する場合this.storage.set(filename, { /* ... */ , date: filedate })

は、私はそれが急に静かに動作を停止し、なぜ私は得ることはありません2017-08-13T13:44:10.000Z

のようなものを取得します。 metadate.dateはfiledateとfiledateの古い値なので、修正する方法はnew Date(...)です!最後の2週間はこのセクションで変更されたコードはありません。

編集:代わりに(new Date(metadata_stored.date)).getTime()を実行して解決しました。しかし、私はまだそれがなぜ動作を停止したのか分かりません理由なし...

答えて

0

ローカルストレージでは、すべてが文字列として格納されます。 metadata_stored.datestring、ないDateあるので、あなたが(new Date(metadata_stored.date)).getTime()を使用する必要があります意味

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); 
+0

なぜ以前に動作していたのですか、なぜiOSでの動作が停止したのでしょうか? ._。 – Niavart

+0

ジャグリングを微妙に変更した可能性があります(JavaScriptは、文字列のような奇妙な割り当てを行うとタイプを別のタイプにするのにはかなり効果があります)。または、ローカルで使用されているフォーマット文字列に変更があった可能性がありますBSTで動作し、GMTでは動作しないなど、問題の原因となった可能性があります。 – Fenton

関連する問題