这个问题可能对有些场景不敏感,但是我下面说的场景那是太重要了,那就是签到
由于时区的问题,比如现在是28号,晚上8点,我在29号凌晨签到的时候,由于云函数端采用的是UTC+0 ,所以始终签到的是28号,问题非常重要,
这样就导致始终签到的是28号
官方文档如下
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions/notice.html
时区
云函数中的时区为 UTC+0,不是 UTC+8,在云函数中使用时间时需特别注意。如果需要默认 UTC+8,可以配置函数的环境变量,设置 TZ
为 asia/shanghai
。
这种情况就造成了下面这个问题
云开发服务器的nodejs时区是utc+0
小程序本地开发的时区是utc+8
同一段云函数在本地调试和云端调试时表现不一致
关于云函数时区,我看了几个帖子,这里整理下
1、云函数中时区问题
https://developers.weixin.qq.com/community/develop/doc/0002eea7518aa0ea5f39ce7fd56c09
2、云开发,获得的日期怎么能成为北京时间的日期?
https://developers.weixin.qq.com/community/develop/doc/000246fdf244305f44397a2e556000
这个帖子里面给出了两个方案,我验证后都没有生效,
3、云开发nodejs环境时区问题
https://developers.weixin.qq.com/community/develop/doc/0008c28e6687d8ddb2b8cf65056400
现在解决了,就是通过上面第三个问题里面的经验,增加环境变量之后,要重新部署云函数,或许要等个半小时。
写在2020-05-25
今天又写这块需求,增加环境变量之后一定要重新部署云函数,然后等个几分钟就好
关于UTC不知道是什么的可以先了解下
另外一个方法:用monent :
package.json文件:
index.js 文件
使用:
怎么设置了还是返回UTC,只是云函数的日志更新时间用了北京时间,这样对吗?那还是要自己转换返回的日期
为什么我设置后还是无效呢?
服务器中都是 UTC+0,处理时间都应注意各个时间的时区,必要时应使用 getTimezoneOffset 处理时区偏移量(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset)
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions/notice.html
在小程序云开发的直播课程里面讲过这个问题,具体的请看下面这篇文章
http://i.hackweek.org/tcb/1103.html
我个人觉得,用设置环境变量的方法不太好。还是云函数里写逻辑的时候自己去+8hour吧。
+8 +8 +8 [抓重点]