小程序云函数中调用 db.serverDate() 获取的值, 如何格式化到 yyyy-mm-dd?
如题,已经测试了一些方法,但都没有办法获取到想要的格式。
查看数据库给db.serverDate() 的返回值类型为 Date,以为可以调用 getFullYear() 等方法,没想到提示报错,db.serverDate(…).getFullYear is not a function
如果使用 new Date 替代 db.serverDate(),使用下面的函数可以获取到想要的格式,但是有时区问题。
function processDate(_date) {
var y = _date.getFullYear();
var m = _date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = _date.getDate();
d = d < 10 ? ('0' + d) : d;
return y + '-' + m + '-' + d;
};
发现 db.serverDate 返回值可以准确获取正确时区(我们有个开发人员在北美,云函数中db.serverDate() 能准确获取到他那边的时区)。
谁能分享一下 db.serverDate 的格式处理方法么,谢谢
1 回复
云函数中,这样设置时区,解决了我们的问题
db.collection('all_houses').add({
data: {
house_title: 'abc',
house_upload_date_server: processDate(new Date()),
},
success: function(res) {
resolve(res);
},
fail: function (err) {
reject(err)
}
})
function processDate(date) {
date = date.toLocaleString("en-US", {timeZone: "这里设置timezone"});
date = new Date(date);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
var h = date.getHours();
h=h < 10 ? ('0' + h) : h;
var minute = date.getMinutes();
minute = minute < 10 ? ('0' + minute) : minute;
var second= date.getSeconds();
second=second < 10 ? ('0' + second) : second;
return y + '-' + m + '-' + d+' '+h+':'+minute+':'+second;
};