21
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JavaScriptのDateの挙動(Safari)

Last updated at Posted at 2018-11-28

Dateの挙動がChromeとSafariで違うことに今日気がつきました...

var dt = new Date('2018-11-28T11:30:30+0900');

ブラウザごとの挙動

Chrome

Chrome ふつーに動きますね。

Safari

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でも確認しましたが大丈夫でした。

21
8
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?