YYYY-MM-DD與YYYY/MM/DD之錯誤時間戳

嘿,老周,我在後臺設置的這個活動是明天零點開始的,你這個頁面上活動開始的倒計時怎麼多出了8個小時?前端

錯因

接口返回的活動開始時間是'2019-06-18',前端需將這個日期轉化爲時間戳來計算當前時間到該日期的倒計時,代碼以下:瀏覽器

var timestamp = new Date('2019-06-18').getTime();
console.log(timestamp ); // 1560816000000

但實際上正確的時間戳應該是1560787200000,多出了28800000毫秒即8個小時!
讓咱們來看看是哪裏在做妖:code

var date = new Date('2019-06-18');
console.log(date); // Tue Jun 18 2019 08:00:00 GMT+0800 (中國標準時間)

預期的Tue Jun 18 2019 00:00:00 GMT+0800 (中國標準時間)變成了Tue Jun 18 2019 08:00:00 GMT+0800 (中國標準時間)對象

對策

將時間格式從YYYY-MM-DD轉爲YYYY/MM/DD:接口

var dateStr = '2019-06-18';
dateStr = dateStr.replace(new RegExp(/-/gm), "/");
console.log(dateStr); // '2019/06/18'
var date = new Date(dateStr);
console.log(date); // Tue Jun 18 2019 00:00:00 GMT+0800 (中國標準時間)

此時的Date對象的值便符合預期了。ip

知識延伸

1.JavaScript中經過Date對象獲取時間戳的經常使用方法:get

  • getTime()
  • valueOf()
var timestamp1 = new Date('2019/06/18').getTime();
var timestamp2 = new Date('2019/06/18').valueOf();
var timestamp3 = +new Date('2019/06/18'); // 此處本質是調用了valueOf()方法
console.log(timestamp1); // 1560787200000
console.log(timestamp2); // 1560787200000
console.log(timestamp3); // 1560787200000

2.safari瀏覽器環境下是不支持YYYY-MM-DD這種格式的console

相關文章
相關標籤/搜索