在做微信小程序的时候,总是碰到要转日期格式的问题,然后各种找博客,找微信社区,总结了一下,大概有以下几种方法:
微信小程序云开发数据库中提出的日期格式:Sun Mar 15 2020 22:43:32 GMT+0800 (中国标准时间)
第一种:利用循环数组然后格式化日期,再把日期值重新赋值到原来的数组中
贴代码:
for (var a = 0; a < res.data.length; a++) {
res.data[a]._datetime = res.data[a]._datetime.toLocaleDateString();
}
好处:方法古老,逻辑较为简单
坏处:只能显示成 “2016/5/6”这样的格式
第二种:与第一种方法类似,也是循环,但是日期格式不一样
贴代码:
for (var a = 0; a < res.data.length; a++) {
var unixTimestamp = new Date(res.data[a]._datetime)
var birthday = unixTimestamp.getFullYear() + "年" + (unixTimestamp.getMonth() + 1) + "月" + unixTimestamp.getDate() + "日 " + unixTimestamp.getHours() + ":" + unixTimestamp.getMinutes() + ":" + unixTimestamp.getSeconds();
res.data[a]._datetime = birthday;
}
好处:日期格式规整,可自由调整
坏处:需要写for循环,代码数较多,多个JS模块使用可能会重复
第三种:利用WXS模块,可以避免重复写JS
var ToDate = function(number1){
var date = getDate(number1);
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 h = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
var m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
return (Y + M + D + " " + h + ":" + m + ":" + s);
}
module.exports.ToDate = ToDate;
好处:代码简洁,逻辑清晰
坏处:需要传入毫秒数,将Sun Mar 15 2020 22:43:32 GMT+0800 (中国标准时间)转化为毫秒数传入用【getTime方法】
有时日期会显示[Object object]这样,getTime()传入毫秒数有时即可解决,因为微信云开发拉的日期是:Sun Mar 15 2020 22:43:32 GMT+0800 (中国标准时间) 这种格式