LoginSignup
19
24

More than 5 years have passed since last update.

【JavaScript】文字列を日付(Date)に変換する際に、ブラウザによる解析の違いで時間がずれる

Last updated at Posted at 2017-12-01

文字列を以下のように日付に変換した場合、ブラウザによって時間がずれた。

// ISO-8601 拡張形式 で、+09:00を省略した形
var strDate= '2018-01-01T02:00:00';
console.log(new Date(strDate)); // Mon Jan 01 2018 02:00:00 GMT+0900 (東京 (標準時)) ← ブラウザによって結果が変わる

PCのChrome、Edge、IE11はマシンのタイムゾーンを見てくれるみたいで日本時間で取得できたが、モバイルSafariだと±0の標準時で取得され、9時間のずれが発生した。

以下のように正確に入れれば問題ない。

new Date('2018-01-01T02:00:00+09:00');

または、2018/01/01 02:00:00 の形だと +09:00 をつける必要がない。
例えば年月日と時間を別々に取っているときとかは、以下の書き方のほうが楽かも。

var ymd = '2018-01-01';
var time = '02:00';

// '2018/01/01 02:00:00' の形する
var strDate = ymd.replace(/-/g, '/') + ' ' + time + ':00';
console.log(new Date(strDate)); // Mon Jan 01 2018 02:00:00 GMT+0900 (東京 (標準時))

文字列→日付変換時のブラウザによる解析の違いは以下のサイトにまとまっていました。
https://so-zou.jp/web-app/tech/programming/javascript/grammar/object/date.htm#no2

19
24
0

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
19
24