Dateの挙動がChromeとSafariで違うことに今日気がつきました...
var dt = new Date('2018-11-28T11:30:30+0900');
ブラウザごとの挙動
Chrome
ふつーに動きますね。Safari
あれ?ダメです。仕様を調査
Date - JavaScript | MDNを見てみます。
構文
new Date();
new Date(value);
new Date(dateString);
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
new Date(dateString);
のdateStringはISO8601形式を認識するとのことなんですけどねぇ...
対応策
結局この方法で対応しました。(2018-11-29コメントを受けて修正)
var at = '2018-11-28T11:30:30+0900';
var dt = new Date(at.replace(/([\+|\-])([0-9]{2})([0-9]{2})$/,"$1$2:$3"));
タイムゾーンの+hhmm部分を+hh:mmにするとSafariでも正しく認識してくれるとのことなので、+0900を+09:00に変換するようにしました。
Firefoxでも確認しましたが大丈夫でした。