小程序GMT时间格式转换

我们在小程序开发过中,向服务器发出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显示

猜你喜欢

转载自blog.csdn.net/snoopy_13579/article/details/130111785