【javascript】invalid time valueが起きる原因と解決法

Dateを扱う一連の流れの中でブラウザ関連で少しハマったのでメモします。
ことの発端は、new Date(‘2000-01-01’)で時刻オブジェクトを生成しようとした時です。
chromeではこの形式で生成成功したのにも関わらずsafariではInvalid time valueエラーで弾かれてしまいました。
どうやら上の2000-01-01の形式でなく
2000-01-01T00:00:00+09:00の形式でないとsafariでは受け付けてくれないもよう。
よく見ると上の時刻形式と少し違う・・・。
なにやら色々追加されていますが、これは、iso8601に基づく拡張形式のフォーマットで、書き換えると
以下のような書き方になります。(wikipedia参照)
2020-05-22T10:00:26+09:00
ちなみにこちらがiso8601の基本形式になります。
20200522T100026+0900
まず一つの相違点としてどちらも日付と時刻をTで挟んでいます。
二つ目の相違点一番後ろの+09:00というのは、協定世界時(UTC)よりも09時間00分早い地域であること
を意味しています。つまり、グリニッジ標準時と日本の時差ということです。
なお、基本形式では後ろの時間が+0900となっており若干違います。
chromeでは基本形式の場合もnew Date(‘2000-01-01’)成功しました。
拡張形式はchromw,safariどちらもクリア。
てな訳でどのブラウザでも汎用的に使える拡張形式の時刻フォーマットを使って解決 ^ ^
</pre>
<div>1991-09-10T00:00:00+09:00</div>
<pre>
Dateを扱う際は両ブラウザで使用可能な
iso8601の拡張形式「2020-05-22T10:00:26+09:00」を使うことをおすすめします。
>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG