我们在小程序开发过中,向服务器发出http请求之后,服务器从数据库读出的内容有时会包含时间,原始数据库存储的时间格式为yyyy-mm-dd hh:mm:ss(UTC格式),但小程序的json会自动将时间转换成GMT格林威治标准时间,导致使用起来很不方便,还要再进行转换,下面提供两种转换方式,一种是在js中转换,在js中使用;另一种是通过wxs进行转换并直接显示到wxml
在js中转换
首先在小程序最外层建立utils文件夹,注意不要建错位置,可以先点一下app.json,然后再点新建文件夹图标
然后在utils文件夹下新建util.js文件
粘贴如下代码
const formatTime = date => {
var date = new Date(date)
const year = date.getUTCFullYear()
const month = date.getUTCMonth() + 1
const day = date.getUTCDate()
const hour = date.getUTCHours()
const minute = date.getUTCMinutes()
const second = date.getUTCSeconds()
return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
module.exports = {
formatTime: formatTime
}
粘贴完成后保存
注意不要使用getFullYear()而是使用getUTCFullYear(),下面同理,否则转换完成后时间会快8个小时
然后进入需要转换时间的对应pages的js里面,例如默认的index.js,在“Page({...”上面添加
var util = require('../../utils/util')
即可使用,例如
console.log(GMT时间);
let local = util.formatTime(GMT时间);
console.log(local);
转换后的结果
通过wxs进行转换
有时我们需要将原来wxml中显示的时间直接进行转换,不需要在js中转换,虽然可以在js中转换后再显示到wxml中,但这样太繁琐了,所以我们通过wxs直接转换显示
同理,在小程序工程的根目录下新建wxs文件夹,在wxs文件夹下新建utils.wxs文件,将以下代码拷贝到该文件中
function dateFormat(date) {
var date = getDate(date);
var year = date.getUTCFullYear()
var month = date.getUTCMonth() + 1
var day = date.getUTCDate()
var hour = date.getUTCHours()
var minute = date.getUTCMinutes()
var second = date.getUTCSeconds()
return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
function formatNumber(n) {
n = n.toString()
return n[1] ? n : '0' + n
}
module.exports = {
dateFormat: dateFormat
}
然后在wxml中第一行加入
<wxs src="../../wxs/utils.wxs" module="tools" />
在需要转换时间格式的地方把变量传入即可
<view>
注册时间:{
{tools.dateFormat(GMT时间)}}
</view>
wxml显示