嘿,老周,我在后台设置的这个活动是明天零点开始的,你这个页面上活动开始的倒计时怎么多出了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
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