小程序云开发时区问题

返回
Author Avatar
钢翼
2019-05-20
编程
372

在用云函数查询周排行榜时,本来是用下面的函数计算当周的周一。

getFirstDayOfWeek = date => {
var day = date.getDay() || 7;
return new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1 - day);
};

但遇到一个问题,在服务器上用new Date()的得到的当前时间时UTC时间,和北京时间相差8个时区。在跨周的时候就会出现问题。

所以新加了两个方法

utc2beijing = date => {
return new Date(date.getTime() + 8 * 60 * 60 * 1000);//转北京时间
}
beijing2utc = date => {
return new Date(date.getTime() - 8 * 60 * 60 * 1000);//转北京时间
}

调用如下

var now = new Date();
now = utc2beijing(now);//当前时间转北京时间
var firstDayOrWeek = getFirstDayOfWeek(now);//获取当前北京时间的周一
firstDayOrWeek = beijing2utc(firstDayOrWeek);//再转成utc时间给数据库查询