抖音资讯

douyinzx

vue格式化日期格式(vue日期时间选择组件)

iseeyu2年前 (2024-05-05)抖音资讯132

在前面我们介绍了vue的综合小案例把前面介绍的一些常用指令我们综合运用了一下,但是还有个小问题,就是显示的'创建时间 cTime'的格式没有处理,虽然我们可以在后台服务处理好后再传递给前端,但是在前端应该也需要能够自主地处理,而我们刚刚介绍了Vue中的过滤器,刚好可以通过Vue的过滤器来解决这个问题,我们来具体看下~

 

在这里插入图片描述

过滤器应用

案例代码

  以下是没有格式化处理之前的代码,效果图就是上面的截图

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="./lib/vue-2.4.0.js"></script>
    <link rel="stylesheet" href="./lib/bootstrap-3.3.7.css">
</head>
<body>
    <div id="app">


        <div class="panel panel-primary">
              <div class="panel-heading">
                    <h3 class="panel-title">品牌管理</h3>
              </div>
              <div class="panel-body form-inline">
                    <label>
                    Id:
                    <input type="text" class="form-control" v-model="id" >
                    </label>

                    <label>
                    Name:
                    <input type="text" class="form-control" v-model="name">
                    </label>


                    <input type="button" value="添加" class="btn btn-primary" @click='add'>

                    <label>
                        搜索名称关键字:
                        <input type="text" class="form-control" v-model="keywords">
                    </label>    
              </div>
        </div>



        <table class="table table-bordered table-hover table-striped">
            <thead>
                <tr>
                    <th>id</th>
                    <th>name</th>
                    <th>cTime</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                <tr v-for="item in search(keywords)" :key="item.id">
                    <td>{{item.id}}</td>
                    <td>{{item.name}}</td>
                    <td>{{item.ctime  }}</td>
                    <td><a href="" @click.prevent="del(item.id)">删除</a></td>
                </tr>
            </tbody>
        </table>



    </div>
    <script> var vm = new Vue({ el: "#app", data: { id:'', name:'', keywords:'', list:[ {id:1,name:'奔驰',ctime:new Date()}, {id:2,name:'宝马',ctime:new Date()} ] }, methods: { add(){ // 添加记录到list中 this.list.push({id:this.id,name:this.name,ctime:new Date()}) // 将输入框置空 this.id=this.name='' }, del(id){ // some方法循环数组,返回true可以终止循环 // this.list.some((item,i) =>{ // if(item.id == id){ // 移除记录 1 移除一条记录 // this.list.splice(i,1); // 返回true 终止循环 // return true; // } //})  // 通过findIndex方法获取要删除记录的index var index = this.list.findIndex(item => { if(item.id == id){ return true } }) // 通过splice方法来移除记录 this.list.splice(index,1); }, search(keywords){ // 保存新的数组 // var newList = [] // this.list.forEach(item => { // 判断循环的记录是否包含的查询的关键字 // if(item.name.indexOf(keywords) != -1){ // 将循环的记录添加到新的数组中 // newList.push(item) // } // }) // 返回数组信息 // return newList // filter 过滤 返回满足条件的数组 return this.list.filter(item => { // includes 是否包含 if(item.name.includes(keywords)){ return item } }) } } }) </script>
</body>
</html>

局部过滤器

  此处案例中我们通过局部过滤器来实现,当然你也可以通过全局过滤器来实现

 

在这里插入图片描述

显示效果

 

在这里插入图片描述

我们发现显示的月份7最好是显示为07,这时我们可以使用一个ES6中新增的方法叫 padStart方法

方法

说明

String.prototype.padStart(maxLength, fillString='')

字符串长度为maxLength,不够的在开头用fillString填充,
例如 :"123".padStart(6,"a")="aaa123"

String.prototype.padEnd(maxLength, fillString='')

这个和上面类似,是在结尾处填充,
例如"123".padEnd(6,"a")="123aaa"

 

在这里插入图片描述

 

在这里插入图片描述

此处仅仅介绍padStart的用法,实际开发场景中应该将天数也要padStart处理

显示时分秒

  有时我们显示Date类型数据的时候,我们希望能够把时分秒也给显示出来,这时为了灵活点我们可以通过参数来动态设置。

 

在这里插入图片描述

调用过滤器的时候传递参数

 

在这里插入图片描述

效果

 

在这里插入图片描述

最后完成代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="./lib/vue-2.4.0.js"></script>
    <link rel="stylesheet" href="./lib/bootstrap-3.3.7.css">
</head>
<body>
    <div id="app">


        <div class="panel panel-primary">
              <div class="panel-heading">
                    <h3 class="panel-title">品牌管理</h3>
              </div>
              <div class="panel-body form-inline">
                    <label>
                    Id:
                    <input type="text" class="form-control" v-model="id" >
                    </label>

                    <label>
                    Name:
                    <input type="text" class="form-control" v-model="name">
                    </label>


                    <input type="button" value="添加" class="btn btn-primary" @click='add'>

                    <label>
                        搜索名称关键字:
                        <input type="text" class="form-control" v-model="keywords">
                    </label>    
              </div>
        </div>



        <table class="table table-bordered table-hover table-striped">
            <thead>
                <tr>
                    <th>id</th>
                    <th>name</th>
                    <th>cTime</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                <tr v-for="item in search(keywords)" :key="item.id">
                    <td>{{item.id}}</td>
                    <td>{{item.name}}</td>
                    <td>{{item.ctime | msgDateFormat('yyyy-mm-dd hh-mi-ss') }}</td>
                    <td><a href="" @click.prevent="del(item.id)">删除</a></td>
                </tr>
            </tbody>
        </table>



    </div>
    <script> var vm = new Vue({ el: "#app", data: { id:'', name:'', keywords:'', list:[ {id:1,name:'奔驰',ctime:new Date()}, {id:2,name:'宝马',ctime:new Date()} ] }, methods: { add(){ // 添加记录到list中 this.list.push({id:this.id,name:this.name,ctime:new Date()}) // 将输入框置空 this.id=this.name='' }, del(id){ // some方法循环数组,返回true可以终止循环 // this.list.some((item,i) =>{ // if(item.id == id){ // 移除记录 1 移除一条记录 // this.list.splice(i,1); // 返回true 终止循环 // return true; // } //})  // 通过findIndex方法获取要删除记录的index var index = this.list.findIndex(item => { if(item.id == id){ return true } }) // 通过splice方法来移除记录 this.list.splice(index,1); }, search(keywords){ // 保存新的数组 // var newList = [] // this.list.forEach(item => { // 判断循环的记录是否包含的查询的关键字 // if(item.name.indexOf(keywords) != -1){ // 将循环的记录添加到新的数组中 // newList.push(item) // } // }) // 返回数组信息 // return newList // filter 过滤 返回满足条件的数组 return this.list.filter(item => { // includes 是否包含 if(item.name.includes(keywords)){ return item } }) } }, filters:{ // 通过局部过滤器来实现 msgDateFormat:function(msg,pattern=''){ // 将字符串转换为Date类型 var mt = new Date(msg) // 获取年份 var y = mt.getFullYear() // 获取月份 从0开始  var m = (mt.getMonth()+1).toString().padStart(2,"0") // 获取天数 var d = mt.getDate(); if(pattern === 'yyyy-mm-dd'){ return y+"-"+m+"-"+d } // 获取小时 var h = mt.getHours().toString().padStart(2,"0") // 获取分钟 var mi = mt.getMinutes().toString().padStart(2,"0") // 获取秒 var s = mt.getSeconds().toString().padStart(2,"0") // 拼接为我们需要的各式 return y+"-"+m+"-"+d+" "+h+":"+mi+":"+s } } }) </script>
</body>
</html>

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/44641.html

相关文章

直播代运营合同避坑:报价、KPI、违约金一次说清

直播代运营合同避坑:报价、KPI、违约金一次说清

去年西安一家女装店老板拿着合同来找我看,就一页纸,上面写着“保证月销30万”。签的时候高高兴兴,三个月后只卖了8万,代运营公司一句“市场环境不好”就撒手不管了。老板想退钱,翻出合同才发现,什么叫销售额、含不含退款、考核多久、数据以谁为准,一个字都没写。这种坑我这两年见了不止十回。 直播代运营合同看...

抖音千川投放怎么投?2026新手起量避坑指南

抖音千川投放怎么投?2026新手起量避坑指南

西安一家做本地餐饮的老张,去年底听人说抖音能拉客,先充了3000块投DOU+。一个月下来,视频播放量是上去了,团购券没卖出几张。后来他才搞清楚,DOU+是给内容加热用的,真正能把团购券卖出去的工具叫巨量千川。2026年,在抖音上做生意的商家基本绕不开这两个东西:DOU+管内容热度,千川管成交转化。...

抖音短视频带货怎么做?2026年挂车出单实操指南

抖音短视频带货怎么做?2026年挂车出单实操指南

直播带货要开播、要人设、要话术,很多西安商家试了两次就放弃了。其实还有一条更轻的路:短视频带货。拍一条视频挂上商品链接,用户刷到直接下单,不用开播,不用连麦,一个人一部手机就能跑。我见过高新一家卖手工辣条的档口,老板就拍后厨炒料,一条视频爆了,挂车链接三天卖了四千多单。我自己也帮几个西安客户跑过这...

抖音矩阵号怎么做?2026年企业多账号布局实操

抖音矩阵号怎么做?2026年企业多账号布局实操

有个西安做门窗的老板跟我抱怨,说一个号发了大半年,播放量卡在一两千上不去,问我是不是号被限流了。我让他去搜搜本地同行,人家三个号轮着发,客户搜「西安封阳台」,翻两屏全是那一家。这不是玄学,就是矩阵。说白了,矩阵不是一个号发十遍,也不是开十个号复制粘贴,而是按客户会搜什么、信什么,把账号分工排好。尤...

抖音蹭热点总翻车?2026年商家追热点的正确姿势

抖音蹭热点总翻车?2026年商家追热点的正确姿势

上周有个做建材的老板问我:热搜上那个话题全网都在拍,我是不是也该跟一条?我反问他,拍完这条视频,客户凭什么找你买瓷砖?他愣了半天没答上来。这就是大多数商家蹭热点的真实状态——看见热点就冲,拍完发现除了播放量,什么都没留下。热点不是不能蹭,是大多数人都蹭错了。我盘过自己服务的客户数据:蹭热点视频的平...

企业抖音蓝V认证2026流程:材料准备与审核避坑

企业抖音蓝V认证2026流程:材料准备与审核避坑

企业号蓝V认证,现在几乎成了西安本地商家做抖音的起手式。不管是餐饮、装修、教育还是批发档口,想挂电话、想开团购、想投DOU+,基本都绕不开这一步。这篇文章把2026年最新的蓝V认证流程、要准备的材料、审核容易挂的地方一次讲清楚。蓝V认证到底有什么用?值不值600块蓝V说白了就是抖音给企业主体做的实...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片