JavaScriptのDateオブジェクトとタイムゾーン

コンストラクタでの日付文字列の扱い

以下、Mac OSのブラウザで検証。

Firefox

JST
d = new Date('2017/09/01')

Date 2017-08-31T15:00:00.000Z

d = new Date('2017-09-01')

Date 2017-09-01T00:00:00.000Z

PDT
d = new Date('2017/09/01')

Date 2017-09-01T07:00:00.000Z

d = new Date('2017-09-01')

Date 2017-09-01T00:00:00.000Z

Chrome

JST

d = new Date('2017/09/01')

Fri Sep 01 2017 00:00:00 GMT+0900 (JST)

d = new Date('2017-09-01')

Fri Sep 01 2017 09:00:00 GMT+0900 (JST)

PDT

d = new Date('2017/09/01')

Fri Sep 01 2017 00:00:00 GMT-0700 (PDT)

d = new Date('2017-09-01')

Thu Aug 31 2017 17:00:00 GMT-0700 (PDT)

Safari

JST

> d = new Date('2017/09/01')

< Fri Sep 01 2017 00:00:00 GMT+0900 (JST)

> d = new Date('2017-09-01')

< Fri Sep 01 2017 09:00:00 GMT+0900 (JST)

PDT

> d = new Date('2017/09/01')

< Fri Sep 01 2017 00:00:00 GMT-0700 (PDT)

> d = new Date('2017-09-01')

< Thu Aug 31 2017 17:00:00 GMT-0700 (PDT)

まとめ

Firefox、Chrome、Safariとも

  • new Date('YYYY/MM/DD') だとローカルタイム
  • new Date('YYYY-MM-DD') だとUTC

と解釈される。

参考

Date: 2017/09/04

Tags: javascript