评论

微信答题小程序在云函数导出的排行榜数据中,为什么Date时间不对

微信答题小程序在云函数导出的排行榜数据中,为什么Date时间不对

导出答题成绩排行榜通常涉及到以下几个步骤:

1、查询数据库:首先需要从数据库中查询出所有用户的答题成绩。

2、排序:根据成绩对查询结果进行排序。

3、导出:将排序后的数据导出为CSV或Excel文件。

由于微信小程序并没有直接提供导出文件的API,通常的做法是将数据导出到小程序端,然后利用小程序的文件系统API将数据保存为文件,最后通过微信的文件分享功能让用户下载。

我这里基于云函数实现cloud.uploadFile,将本地资源上传至云存储空间。


发现问题

当知识竞赛答题小程序活动结束后,在导出排行榜的云函数中,使用moment进行格式化答题日期。


moment(item.createTime).format('YYYY-MM-DD HH:mm:ss')

导出的排行榜数据如下:

经与数据库实际记录的时间核对,发现时间有误差。后来经过排查发现,原来是云函数的时区问题。


云函数中的时区为 UTC+0,不是 UTC+8,在云函数中使用时间时需特别注意。如果需要默认 UTC+8,可以配置函数的环境变量,设置 TZ 为 Asia/Shanghai。


解决方法

在微信开发者工具,云开发-》云函数-》对指定的函数添加环境变量


TZ=>Asia/Shanghai


结果

导出的答题日期正常了


点赞 1
收藏
评论

1 个评论

  • 啷个哩个浪
    啷个哩个浪
    09-25

    太坑了。。。也没个可以直接设置时区的地方

    09-25
    赞同
    回复
登录 后发表内容