7839

雑草魂エンジニアブログ

【JS】new Date()で日時指定する際にNaNになる

発生事象

let dt = new Date('2020-04-29 22:00:00')

PCのChromeブラウザでは問題なく日時が表示されました。

しかしながら、スマホで表示を確認すると、「NaN」と表示されてしまいました。

ブラウザ バージョン
PCのChrome 81.0.4044.122
AndroidChrome 80.0.3987.149
iOSChrome 80.0.3987.95
Safari 13.1

このバグはなんだ???🧐

解決策

調査した結果、年月日の「-(ハイフン)」が原因の模様。

let dt = new Date('2020/04/29 22:00:00')

「-(ハイフン)」→「/(スラッシュ)」に変更することで、問題なく表示された。 APIjsonデータを取得した際に、'YYYY-MM-DD HH:mm:ss' の形式なので以下の処理を追加して対応することとした。

let strDate = '2020/04/29 22:00:00'
let dt = new Date(strDate.replace(/-/g,"/"));

参考

www.ecma-international.org