function (format,str){ if(str){ var date = new Date(str); } else{ date = new Date(); }
var Y = date.getFullYear() + '-'; var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'; var D = date.getDate()<10? '0'+(date.getDate()):date.getDate(); var hh = (parseInt(date.getHours())>9?date.getHours():'0'+date.getHours()) + ':'; var mm = (parseInt(date.getMinutes())>9?date.getMinutes():"0"+date.getMinutes()) + ':'; var mmEnd =(parseInt(date.getMinutes())>9?date.getMinutes():"0"+date.getMinutes()); var ss = parseInt(date.getSeconds())>9?date.getSeconds():'0'+date.getSeconds(); if(format) { if (format == 'Y-M-D hh:mm:ss') { return Y + M + D + " " + hh + mm + ss; } else if (format == 'Y-M-D hh:mm') { return Y + M + D + " " + hh + mmEnd; } else { return Y + M + D } } else { return Y + M + D + " " + hh + mm + ss; } }
这几个时间都是什么时间?可以提供下复现代码吗?
getTime和getClienTime是一样的代码如下:
所以观察到是小程序端的时间错了还是云函数的时间错了呢?手机上的时钟设置是否有问题呢?
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/aggregate/AggregateCommand.dateToString.html
你看下是不是在查询的时候没有设置timezone,我之前遇到的情况是,数据库存储的时间是对的,但是通过云函数去查询记录的时候,获取到的时间就少了8个小时,后来看官方文档需要设置一下timezone,设置一下,就好啦
const $ = db.command.aggregate db .collection('students') .aggregate() .project({ _id: 0, formatDate: $.dateToString({ date: '$date', format: '%H:%M:%S', timezone: 'Asia/Shanghai' }) }) .end()
遇到同样问题,云函数设置TZ-Asian/Shanghai参数也无法解决。感觉非常无奈
在开发端写入的时间没有问题,
在云数据库看到的时间,也没有问题,
通过云函数查询返回的时间,就是跟当前时间差8个小时。
手机端时间没问题是云函数的时间有问题
8小时的话应该是时区的问题
难道不是北京时间?