21. Vue 使用padStart补全转化时间格式

需求

在时间格式化的过滤字符串中,如果没有补全字符串的内容,可能显示如下:

13423234-47b37a7285043dc5.png

可以看到月份分钟数显示为单个数字,能否补全为0107的显示效果呢?

下面使用padStart()方法来处理一下。

pagStart() 和 padEnd 使用说明

使用ES6中的字符串新方法 String.prototype.padStart(maxLength, fillString='') 或 String.prototype.padEnd(maxLength, fillString='')来填充字符串;

参数说明:

  • maxLength 填充后的字符串长度
  • fillString 使用填充的字符串

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--  1.导入vue.js库  -->
    <script src="lib/vue.js"></script>

</head>
<body>

<div id="app">

    <!--  定义字符串的显示  -->
    <p> 字符串:{{ num }} </p>

    <!--  使用padStart补全字符串  -->
    <p> padStart:{{ num | strPadStart('0') }} </p>

    <!--  使用padEnd补全字符串  -->
    <p> padEnd:{{ num | strPadEnd('0') }} </p>

</div>

<script>

    // 2. 创建一个Vue的实例
    var vm = new Vue({
        el: '#app',
        data: {
            num: "1", // 定义显示时间
        },
        methods: {},
        filters:{ // 定义局部过滤器

            strPadStart(value, pattern = ""){ // 使用padStart补全字符串
                return value.toString().padStart(4,pattern)
            },

            strPadEnd(value, pattern = ""){ // 使用padEnd补全字符串
                return value.toString().padEnd(4,pattern)
            }

        }
    });



</script>

</body>
</html>

浏览器显示如下:

13423234-e7fd496e79959fb5.png

下面来完善一下前面时间格式化的过滤器

13423234-52c10d78472f85a1.png
        filters:{ // 定义局部过滤器

            formatCtime(dateStr, pattern = ""){
                    // 格式化dateStr时间
                    var dt = new Date(dateStr);

                    // 获取年
                    var year = dt.getFullYear();

                    // 获取月
                    var month = (dt.getMonth() + 1).toString().padStart(2,'0'); // 月份 0 - 11,需要 + 1

                    // 获取日
                    var day = (dt.getDate()).toString().padStart(2,'0');

                    // 判断格式化是 yyyy-mm-dd 还是 yyyy-mm-dd hh:mm:ss
                    if (pattern.toLowerCase() === "yyyy-mm-dd"){

                        // 拼接 yyyy-mm-dd
                        // return year + '-' + month + '-' + day
                        return `${year}-${month}-${day}` // 返回yyyy-mm-dd格式化时间

                    } else{

                        // 获取小时
                        var hours = (dt.getHours()).toString().padStart(2,'0');

                        // 获取分钟数
                        var minutes = (dt.getMinutes()).toString().padStart(2,'0');

                        // 获取秒数
                        var secounds = (dt.getSeconds()).toString().padStart(2,'0');

                        // 返回 yyyy-mm-dd hh:mm:ss 格式化时间
                        return `${year}-${month}-${day} ${hours}:${minutes}:${secounds}`
                    }


            }

        }

浏览器显示如下:

13423234-98be921d53441373.png
13423234-0e3934319aa622f6.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

海洋的渔夫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值