首頁  >  問答  >  主體

javascript - JS字串轉時間戳相差8小時問題

var time = new Date('2014-07-03'); //Thu Jul 03 2014 08:00:00 GMT 0800 (中國標準時間)
Date.parse(time); //1404345600000


var time = new Date('2014-7-3'); //Thu Jul 03 2014 00:00:00 GMT 0800 (中國標準時間)
Date.parse(time); //1404316800000


補全0之後咋就多了8小時呢?

怪我咯怪我咯2687 天前740

全部回覆(3)我來回復

  • 黄舟

    黄舟2017-05-19 10:20:39

    根據 ECMA-262 ed 3,對時間的解析可能有不同處理方式。

    在 ES5 中,對 ISO 8601 格式的字串,如果沒有指定時區,則解析為 UTC,對非 ISO 8601 的處理沒有統一行為。

    在 ES2015 中,對沒有指定時區的字串解析為當地時間(根據系統時間)。

    如果你希望把所有這種形式的字串都處理為當地時間,可以自己寫個函數:

    function parseISOLocal (s) {
      var b = s.split(/\D/);
      return new Date(b[0], b[1]-1, b[2]);
    }

    回覆
    0
  • 某草草

    某草草2017-05-19 10:20:39

    前段時間也看到這個問題。

    如果將​​日期格式換成“2014/07/02”,則正常換算成0點。

    參考:軒楓閣 http://www.xuanfengge.com/js-...

    回覆
    0
  • 高洛峰

    高洛峰2017-05-19 10:20:39

    在火狐下是正常的

    回覆
    0
  • 取消回覆