评论

wxs下的时间格式化

使用wxs实现date对象的格式化

1、首先,创建一个wxs的文件,内容如下

var formatTime = function(date) {
var date = getDate(date); //返回当前时间对象
var year = date.getFullYear()
var month = fixz(date.getMonth() + 1)
var day = fixz(date.getDate())

var hour = fixz(date.getHours())
var minute = fixz(date.getMinutes())
var second = fixz(date.getSeconds())

return [year, month, day].join(’-’) + ’ ’ + [hour, minute, second].join(’:’)
}

var fixz = function(num) {
if (num < 10) {
return ‘0’ + num
}
return num
}

module.exports = {
formatTime: formatTime
}

2、在wxml中引用文件
<wxs module=‘tools’ src=‘tools.wxs’></wxs>

3、在wxml中转格式
{{tools.formatTime(item.createTime)}}

写在最后,为什么不直接用外部的js?因为所有的所有的数据需要提前在page下的js中处理好才能输出到wxml中,比较麻烦。用wxs可以直接在页面中转化,而且可以直接复用。

点赞 2
收藏
评论

11 个评论

  • 不知道
    不知道
    2019-05-13
      /**
     * 将日期格式化成指定格式的字符串
     * @param date 要格式化的日期,不传时默认当前时间,也可以是一个时间戳
     * @param fmt 目标字符串格式,支持的字符有:y,M,d,q,w,H,h,m,S,默认:yyyy-MM-dd HH:mm:ss
     * @returns 返回格式化后的日期字符串
     */
    formatDate: function (date, fmt) {
      date = date || "";
      date = getDate(date.toString().replace(getRegExp("-", "g"), "/"));
      date = date === undefined ? getDate() : date;
      date = typeof date == "number" ? getDate(date) : date;
      fmt = fmt || "yyyy-MM-dd HH:mm:ss";
      var obj = {
        y: date.getFullYear(), // 年份,注意必须用getFullYear
        M: date.getMonth() + 1, // 月份,注意是从0-11
        d: date.getDate(), // 日期
        q: Math.floor((date.getMonth() + 3) / 3), // 季度
        w: date.getDay(), // 星期,注意是0-6
        H: date.getHours(), // 24小时制
        h: date.getHours() % 12 == 0 ? 12 : date.getHours() % 12, // 12小时制
        m: date.getMinutes(), // 分钟
        s: date.getSeconds(), // 秒
        S: date.getMilliseconds() // 毫秒
      };
      var week = ["天", "一", "二", "三", "四", "五", "六"];
      var objKeys = ['y', "M", "d", "q", "w", "H", "h", "m", "s", "S"];
      for (var i = 0; i < objKeys.length; i++) {
        var key = objKeys[i];
        fmt = fmt.replace(getRegExp(key + "+", "g"), function(m) {
          var val = obj[key] + "";
          if (key == "w") return (m.length > 2 ? "星期" : "周") + week[val];
          var len = val.length;
          for (var j = 0; j < m.length - len; j++)
            val = "0" + val;
          return m.length == 1 ? val : val.substring(val.length - m.length);
        });
      }
      return fmt;
    },

    给你个我写的

    2019-05-13
    赞同 9
    回复
  • 韦不吕
    韦不吕
    2019-07-14

    你这item.createTime是什么格式?

    db.serverDate()创建出来的时间,用这个方法无法直接在WXML解析。


    2019-07-14
    赞同 2
    回复
  • P=NP
    P=NP
    2020-07-14

    按照你的方法了,但是获取出来的是这样一个东西

    2020-07-14
    赞同 1
    回复 1
    • 宝莉
      宝莉
      2021-12-20
      您好,有发现是什么问题吗,最后是怎么解决的呢
      2021-12-20
      回复
  • 李乾坤David
    李乾坤David
    2022-10-14
    var formatTime = function (strDate, format = "yyyy-MM-dd hh:mm:ss") {
      if(strDate==null || strDate ==undefined || strDate=="")
      {
          return ""
      }
      // 解决ios出现NaN问题
      strDate = strDate.replace("T", " ");
      var realDate = strDate ? getDate(strDate.replace(getRegExp('-', 'g'), '/')) : getDate();
      var regYear = getRegExp("(y+)", "i");
      var date = [
          ["M+", realDate.getMonth() + 1],
          ["d+", realDate.getDate()],
          ["h+", realDate.getHours()],
          ["m+", realDate.getMinutes()],
          ["s+", realDate.getSeconds()],
          ["q+", Math.floor((realDate.getMonth() + 3) / 3)],
          ["S+", realDate.getMilliseconds()],
      ];
      var reg1 = regYear.exec(format);
      if (reg1) {
          format = format.replace(reg1[1], (realDate.getFullYear() + '').substring(4 - reg1[1].length));
      }
      for (var i = 0; i < date.length; i++) {
          var reg2 = getRegExp("(" + date[i][0] + ")").exec(format);
          if (reg2) {
              format = format.replace(reg2[1], reg2[1].length == 1 ? v : ("00" + date[i][1]).substring(("" + date[i][1]).length));
          }
      }
      return format;
    }
    
    
    module.exports = {
      formatTime:formatTime
    }
    


    测试有效的。

    2022-10-14
    赞同
    回复
  • 李乾坤David
    李乾坤David
    2022-10-14

    我的也显示aN。我的时间是 `2022-04-10T09:00:00.191Z`

    怎么解决。

    2022-10-14
    赞同
    回复
  • 手捧阳光。
    手捧阳光。
    2020-08-20

    {{tools.formatTime(item.createTime*1000)}} 这样就正常了

    2020-08-20
    赞同
    回复
  • 冰凌
    冰凌
    2020-03-19

    你好问下item.createTime这个值是什么形式的呢 我传入时间戳时间不对呢

    2020-03-19
    赞同
    回复
  • 哎呦喂
    哎呦喂
    2019-09-02

    如何生成时间格式,设置生成打印时间有,再wxml中调用显示为object,谢谢。

    2019-09-02
    赞同
    回复 1
    • 王政娇
      王政娇
      2020-03-17
      time.toString()
      2020-03-17
      回复
  • Echokh
    Echokh
    2019-08-29

    这个方法无法在wxml中解析?

    2019-08-29
    赞同
    回复
  • Alice
    Alice
    2019-08-19

    请问你这个方法如何让当前时间减去8个小时呢?

    2019-08-19
    赞同
    回复

正在加载...

登录 后发表内容