目录

背景

正文

wxs

wxml


  • 背景

最近开发小程序的过程中,发现需求中有大量需要转换时间的地方,而且每个地方转换的时间格式都不一样,于是就想,小程序中是否有Vue的过滤器一样的方式,直接在输出到html时进行时间格式化操作,这样可以节省很多的时间花在处理数据中的时间格式化上,毕竟大量的数据都是以数组的形式传给前端,如果在pageJs中处理需要大量的循环操作,性能低且繁琐!

  • 正文

言归正传,小程序中到底有没有类似Vue的过滤器呢!答案是很明显的,小程序那么强大的东东,怎么可能不支持这玩意儿呢!在此处,我们需要使用到小程序中的一个wxs的文件辅助我们实现过滤器功能。

WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。

wxs文件比较特殊,他不是单纯的javascript脚本语言,而是微信自己出的一套语言规范,其中有很多javascript种可以正常使用的功能,如new Date(),/\d*/gi等在这里都有另外一种使用方式。具体详见官方文档:

wxs微信官方解释文档

我们的过滤器就需要依赖这个wxs,废话不多说,咱直接贴代码吧。

wxs

首先,我们创建一个wxs文件,此处命名为:timeUtil.wxs


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);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];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;
}module.exports = {dateFormat: dateFormat
};

wxml

我们定义好了我们的过滤器之后,就需要在wxml中进行调用

<wxs module="dateUtil" src="../../wxs/timeUtil.wxs"></wxs>
<!--index.wxml-->
<view class="container"><view><!-- 不指定格式则默认输出:yyyy-MM-dd hh:mm:ss 格式 -->{{dateUtil.dateFormat('1537578367970')}}</view><view><!-- 第一个参数为当前时间戳,第二个参数为指定时间输出格式,如下 -->{{dateUtil.dateFormat('1537578367970','yyyy/MM/dd')}}</view></view>

好了,过滤器已经绑定好了,来看看输出结果是否是我们的预期:

完美!!!

微信小程序-wxs实现时间格式化过滤器(正则)相关推荐

  1. 微信小程序时间加法_微信小程序获取系统时间、时间戳、时间时间戳加减

    微信小程序获取系统时间.时间戳.时间时间戳加减,微信小程序获取明天时间 //获取当前时间戳 var timestamp = Date.parse(new Date()); timestamp = ti ...

  2. 微信小程序账号长时间未登录冻结解封

    微信小程序账号长时间未登录冻结解封 1.账号找回链接[官方]:http://mp.weixin.qq.com/acct/findacct?action=scan 2.按照官方指引的三个操作步骤进操作, ...

  3. 微信小程序渲染实时时间

    微信小程序渲染实时时间 1.看看在框架目录中是否有util文件夹,它用来存放工具栏的JavaScript函数 2.在要获取时间的.js文件中加载util.js文件 3.在onload方法中,调用uti ...

  4. 关于微信小程序iOS端时间格式兼容问题

    关于微信小程序iOS端时间格式兼容问题 在自己开发中,当时间格式为 2020-06-29 08:00 ,需要将时间转为其他格式时,Android端转换成功,iOS端报错或是转为NaN. 解决方法: 1 ...

  5. 创建微信小程序日期和时间的组件

    效果如下 微信小程序 1.首先创建一个components,接着创建一个文件picker 2.在picker.wxml文件里写入: <picker mode="multiSelecto ...

  6. 微信小程序 如何获取时间

    微信小程序虽然还在内测,但是已经火的不行.赶紧看看.记录学习路上的点点滴滴. 获取时间直接用 Date.now() 得到一串数字.如下图: 获取格式化的时间用 util.formatTime(new ...

  7. 微信小程序wxs封装使用以及公共js组件封装

    wxs封装 wxs可以直接写在wxml页面中,并且在对应的位置调用,比如在{{ xxx.xxx() }}调用wxs的函数 <view><view>第{{m1.getMax(1) ...

  8. 微信小程序 - 获取当前日期时间(函数封装)

    效果图 前言 摘自微信小程序 demo 程序中 utils.js 方法. 普通 new Date() 出来的日期时间,并不是我们想要的格式,所以要进行格式整理. 解决方案 打开 utils.js 文件 ...

  9. 微信小程序之日期时间筛选器实现(支持年月日时分)

    开发微信小程序过程中,有个需求需要用到日期时间筛选器,查看微信官方文档后,发现官方文档的picker筛选器只能单独支持日期或者是时间,所以为了实现需求自己参考企业微信封装了个日期时间筛选器组件. 写在 ...

  10. 微信小程序 Canvas 自定义时间显示器 数码管显示

    微信小程序自定义时间显示器Demo 废话不多话,还是依旧上图再说,哈哈 怎么样,效果还是不错的吧,因项目要求,要画出类似于数码管显示的时间样式,没办法,虽然不咋过好弄,但工作毕竟得做,于是乎,楼主,花 ...

最新文章

  1. 自学python还是报班-Python应该自学还是报班好?
  2. ofstream、ifstream、fstream
  3. python丢失api-ms-win-crt-process_api-ms-win-crt-process-l1-1-0.dll 丢失的处理,遇到问题和完美解决...
  4. 极致业务基础开发平台
  5. Cisco PPPOE配置详解
  6. OCR文字识别技术总结(三)
  7. [LeetCode]12. Integer to Roman
  8. spring简易学习笔记四(jdbcTemplate和事务控制)
  9. QTeewidget逐行进行遍历(递归)
  10. usb抓包工具 安卓_android 抓包工具的使用
  11. 剩余电流互感器互感电流放大转真有效值
  12. 【工具使用】AI帮你写代码
  13. vscode中出现 Statements must be separated by newlines or semicolons 问题的解决方法之一
  14. java山地车 故障,山地车经常会出现的十个小故障,你都遇到了几个
  15. 开启docker远程访问
  16. matlab用割线法,Todd’s Matlab讲义第6讲:割线法
  17. linux交互式脚本编写,谢烟客---------Linux之bash脚本编程---用户交互
  18. 实现网页原路返回:从哪个页面跳转过来就返回哪个页面
  19. ubuntu 22.04设置字体为Garuda(mac字体Lucida Grande的开源替代)
  20. 手把手教你申请计算机软件著作权(2)—— 生成代码文件身份证明

热门文章

  1. 大疆2018网申之机器学习算法工程师笔试题B卷
  2. CCS 报警告 #10247-D
  3. HDU 5857 Median(找中位数)
  4. 英语常见词根词缀大全(一)
  5. Android IOS视频录制技术方案
  6. MapReduce经典案例实战
  7. C语言中关于中文字符的存储及相关探索
  8. 批量将所有文件按照文件名中的扩展名后缀进行分类整理
  9. mysql计算同比和环比的区别_【面试真题】Mysql实现计算同比、环比
  10. 转录组测序分析项目及方法汇总(更新中)