iOS14が公開されてまだまだ日が浅いですが、追加された機能に伴いReactNativeアプリにも変更が必要なものが多々あります。 その中で自分が見つけたのは、Date型コンストラクタの挙動についてです。 Qiitaにも同様の記事を記載しましたが、念のため個人ブログの方にも記載しておきます。
react-native@0.63.1
iOS14
2020/10/14
時点の情報です(今後のアップデートで修正される可能性あり)例えば以下のように文字列からDate
型のコンストラクタを利用した場合です。
サンプル①はISO-8601
の拡張形式のタイムゾーンを指定していない形式です(この時点でオラオラ仕様なのも問題なのですが・・・)。
// サンプル①
const sample1 = '2020-10-10T00:00:00';
// サンプル②
const sample2 = '2020/10/10 00:00:00';
// それぞれDate型にキャストする
const result1 = new Date(text1);
const result2 = new Date(text2);
// 結果を表示
console.log('result1 --> ', result1.toString());
console.log('result2 --> ', result2.toString());
この実行結果がiOS14
前後で異なります。
それぞれ以下の通りです。
result1 --> Wed Oct 14 2020 09:00:00 GMT+0900 (JST)
result2 --> Wed Oct 14 2020 00:00:00 GMT+0900 (JST)
result1 --> Wed Oct 14 2020 00:00:00 GMT+0900 (JST)
result2 --> Wed Oct 14 2020 00:00:00 GMT+0900 (JST)
サンプル①の場合の結果が変わっているのが分かります。
そもそも渡している文字列が正しいフォーマットから少し外れたものであるのも悪いですが、どうやらiOS14
前後でコンストラクタの挙動が異なるようです。
アプリで表示される時刻が、バージョンアップに伴いなぜかずれるという事象に遭遇し、あれこれ検証した結果判明した挙動でした。
同様の事象に悩んでいる方もいるかなと思ったので記事に残しておきます。