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