小程序云开发时区问题
钢翼
编程
在用云函数查询周排行榜时,本来是用下面的函数计算当周的周一。
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时间给数据库查询