wxs对时间戳按照自定义进行格式化

新手上路,请多包涵

我是在wepy上使用的wxs。下面的这段对时间戳进行格式化的原js代码我已经在html文件里测试过是正常的。
现在是要把它改成wxs支持的语法。无奈对js的正则理解得还比较差,测试了好多遍还是没法正确改得了这个RegExp。

wxml调用这个方法的代码是:

<view class="item-time">{{timeFilter.getTime(item.create_time, 'yyyy-MM-dd hh:mm:ss')}}</view>

js部分引入这个wxs代码是:

import timeFilter from '../wxs/filter.wxs'
wxs = {
      timeFilter
    }

下面是这个filter.wxs的完整代码
这个getTime方法传入的2个参数,time是时间戳(精确到秒),fmt是格式(yyyy-mm-dd)。

module.exports = {

  getTime: function (time, fmt) {
    if (!time) return ''

    var date = getDate(time * 1000)

    var o = {
      'M+': date.getMonth() + 1,               // 月份
      'd+': date.getDate(),                    // 日
      'h+': date.getHours(),                   // 小时
      'm+': date.getMinutes(),                 // 分
      's+': date.getSeconds(),                 // 秒
      'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
      'S': date.getMilliseconds()             // 毫秒
    }
    if (/(y+)/.test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
    }
    for (var k in o) {
      if (new RegExp('(' + k + ')').test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
      }
    }
    return fmt
  }
}

如果直接用上面这段代码的话,报错信息如下:
图片描述

求各位大神帮忙修改一下,万分感谢!!

阅读 2.5k
1 个回答

wxs在安卓上并没有速度优势,而微信小程序本身在ios上体验也就那样
并不建议写wxs

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题