嘿,老周,我在后臺設(shè)置的這個(gè)活動是明天零點(diǎn)開始的捌木,你這個(gè)頁面上活動開始的倒計(jì)時(shí)怎么多出了8個(gè)小時(shí)亏娜?
錯(cuò)因
接口返回的活動開始時(shí)間是'2019-06-18'
焕窝,前端需將這個(gè)日期轉(zhuǎn)化為時(shí)間戳來計(jì)算當(dāng)前時(shí)間到該日期的倒計(jì)時(shí),代碼如下:
var timestamp = new Date('2019-06-18').getTime();
console.log(timestamp ); // 1560816000000
但實(shí)際上正確的時(shí)間戳應(yīng)該是1560787200000
维贺,多出了28800000
毫秒即8個(gè)小時(shí)它掂!
讓我們來看看是哪里在作妖:
var date = new Date('2019-06-18');
console.log(date); // Tue Jun 18 2019 08:00:00 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)
預(yù)期的Tue Jun 18 2019 00:00:00 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)
變成了Tue Jun 18 2019 08:00:00 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)
對策
將時(shí)間格式從YYYY-MM-DD
轉(zhuǎn)為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 (中國標(biāo)準(zhǔn)時(shí)間)
此時(shí)的Date對象的值便符合預(yù)期了。
知識延伸
- JavaScript中通過Date對象獲取時(shí)間戳的常用方法:
- 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'); // 此處本質(zhì)是調(diào)用了valueOf()方法
console.log(timestamp1); // 1560787200000
console.log(timestamp2); // 1560787200000
console.log(timestamp3); // 1560787200000
- safari瀏覽器環(huán)境下是不支持
YYYY-MM-DD
這種格式的