WXS(WeiXin Script)是小程序的一套脚本语言,wxs 与 javascript 是不同的语言,有自己的语法,并不和 javascript 一致。其中包括了很多日常使用的javascript函数,在wxs中都是不能同样使用的。最近在做一个列表的时候,涉及到时间格式化操作。就遇到了这个问题,以前写好了的格式化工具函数直接拷贝到小程序项目的wxs文件中,函数不能正常执行。其中包括了下面的几个错误正则表达式在字符串的replace函数中的使用方法不一样,不能直接使用var a = /[0-9]/这种方式声明使用。正确的方式为var reg = getRegExp("-", “g”);获取当前时间不能通过new Date()获取,而是通过getDate方法获取。getDate(‘2018/12/12’)可以获取对应日期的date类型的时间。按照上面的异同,修改过后的时间格式化函数代码为var formatNumber = function (n) { n = n.toString() return n[1] ? n : ‘0’ + n}var regYear = getRegExp("(y+)", “i”);var dateFormat = function (timestamp, format) { if (!format) { format = “yyyy-MM-dd hh:mm:ss”; } timestamp = parseInt(timestamp); // 通过getDate()方法获取date类型的时间 var realDate = getDate(timestamp); function timeFormat(num) { return num < 10 ? ‘0’ + num : num; } var date = [ [“M+”, timeFormat(realDate.getMonth() + 1)], [“d+”, timeFormat(realDate.getDate())], [“h+”, timeFormat(realDate.getHours())], [“m+”, timeFormat(realDate.getMinutes())], [“s+”, timeFormat(realDate.getSeconds())], [“q+”, Math.floor((realDate.getMonth() + 3) / 3)], [“S+”, realDate.getMilliseconds()], ]; var reg1 = regYear.exec(format); // console.log(reg1[0]); if (reg1) { format = format.replace(reg1[1], (realDate.getFullYear() + ‘’).substring(4 - reg1[1].length)); } for (var i = 0; i < date.length; i++) { var k = date[i][0]; var v = date[i][1]; // getRegExp初始化一个正则表达式对象 var reg2 = getRegExp("(" + k + “)”).exec(format); if (reg2) { format = format.replace(reg2[1], reg2[1].length == 1 ? v : (“00” + v).substring(("" + v).length)); } } return format;}把格式化的日期时间字符串转换成时间戳function parse(fmt) { fmt1 = fmt.substring(0, 19); var reg = getRegExp("-", “g”); fmt2 = fmt1.replace(reg, ‘/’); var timestamp = getDate(fmt2).getTime(); return timestamp;}调用方法如下function getDateByDateTimeFmt(dateTimeFmt) { return dateFormat(parse(dateTimeFmt), ‘MM月dd日’);}getDateByDateTimeFmt(‘2012-12-12 13:12:12’) // => 12月12日