vue自定义过滤器

前端在通过接口获取到时间数据后返回的结果不是自己想要的格式可以通过以下的方式来进行处理

offTime: function(value) {
				console.log("要格式化的数据", value);
				const dt = new Date(value * 1000)
				// const y = dt.getFullYear()
				// const m = (dt.getMonth() + 1 + '').padStart(2, '0')
				// const d = (dt.getDate() + '').padStart(2, '0')
				const hh = (dt.getHours() + '').padStart(2, '0')
				const mm = (dt.getMinutes() + '').padStart(2, '0')
				const ss = (dt.getSeconds() + '').padStart(2, '0')
				console.log(hh + ":" + mm + ":" + ss);
				return y + "-" + m + "-" + d + " " + hh + ":" + mm + ":" + ss
                },
            }

首先讲一下dt括号内的东西

因为获取的时间戳精度不一样格式化所需要进行的处理也就不一样,具体规则如下

13位的时间戳,其精度是毫秒(ms);
10位的时间戳,其精度是秒(s);

13位数的时间戳转化为10位数的时间戳 ,除以1000;
10位数的时间戳转化为13位数的时间戳 ,乘以1000;

在javascript中, new Date().getTime() 得到的是13位的时间戳。

console.log(Date.now()) // 1641976859604
// 时间戳13位数,直接转,低于10位数,先乘1000再转

括号内的处理根据自身数据实际情况进行改动即可

下面再讲一个我自身在事件格式化的时候遇到的问题

后端返回给位的数据是年-月-日 时:分:秒 这种格式的,我的需求是把他处理为只显示年月日的格式

我用的是uniapp,安卓端正常是没有问题的,但是到了ios系统以后会变成NaN-NaN-NaN

原因在于ios系统会将   -   自主转译为  导致格式化失败 

我们只需要作如下处理即可

data: function(input) {
				var d = new Date(input.replace(/-/g, "/"));
				var year = d.getFullYear();
				var month = (d.getMonth() + 1).toString().padStart(2, "0");
				var day = d.getDate() < 10 ? "0" + d.getDate() : "" + d.getDate();
				return year + "-" + month + "-" + day;
			},

当然也有更简单的方法来处理已经格式化的数据

var date = 2022-11-14 16:50:56
date.substring(0, 7); // 2022-11
date.substring(0, 10); // 2022-11-14

手写过滤器的方法就是上面这些啦,希望能帮到大家,本人技术也比较菜,写的东西一般都是比较基础的东西,为了有时候写代码方便快速实现简单功能,也想把自己踩过的坑发出来,让后学习的能少踩坑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BUG_Jia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值