new Date()を出力したらSafariでNaNになる件


jsonで取得したデータの中から日付を出力させて見たところ、iPhoneでNaNになるよってチェックバックが

var date = new Date('2019-09-27 12:00:13');

こんな感じで日付を取得しています

ブラウザの挙動

先程取得したdateをconsoleしてみます

console.log(date);

Firefox

Date Fri Sep 27 2019 12:00:13 GMT+0900 (日本標準時)
ちゃんと出てますねぇ、、、

Chrome

Fri Sep 27 2019 12:00:13 GMT+0900 (日本標準時)
こちらも大丈夫

Safari

Invalid Date
・・・ダメみたいです

対策法

さてどうしたものかとググってみると、
どうも年月日の-(ハイフン)が悪さをしている模様

試しに-を/に変えて出力させてみます

var date = new Date('2019/09/27 12:00:13');
console.log(date);

Fri Sep 27 2019 12:00:13 GMT+0900 (JST)
ちゃんと出力されました

ということで、replaceを使って-を/に置換してやります

var dt   = '2019-09-27 12:00:13'
var date = new Date(dt.replace(/-/g,"/"));

これで無事Safariでもエラー無く日付が表示されましたとさ