导出答题成绩排行榜通常涉及到以下几个步骤:
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
结果
导出的答题日期正常了
太坑了。。。也没个可以直接设置时区的地方