0
点赞
收藏
分享

微信扫一扫

前端时间转换成正常时间格式输出

奋斗De奶爸 2021-09-18 阅读 142
uni-app

方法1:

如果我们从接口获取到的时间格式是这个样子的 2021-04-09T22:54+08:00(UTC世界协调时间),我们应该怎么转换成正常格式输出,让别人都能看明白。

我恰好在弄一个uniapp项目,是弄天气APP的,所以遇到了这个问题。
我用了个笨方法,借助Vue语法的计算属性来实现了。

主要利用了substr(startIndex,num)方法

参数解释:
startIndex 从哪一个位置开始索引
num 要截取几个字符

        computed:{
            date1:function(){
                let temp = this.date;  
                console.log(temp)// 2021-04-09T22:54+08:00
                let date_join = `
                ${temp.substr(0,4)}年
                ${temp.substr(5,2)}月
                ${temp.substr(8,2)}日
                ${temp.substr(11,5)}`
                return date_join
            }
        }

方法2:下面这个例子我尽量写详细点。

模拟数据:比如现在我们从服务器上拿到这样一个格式的时间的字符串。

<view>
    {{UTC_time}}
</view>




data () {
            return {
                UTC_time:"2021-04-20T22:54+08:00"
            }
        },

怎样把这种格式的字符串换成每个人都易懂、带年月日输出的标准规范字符日期。


我们要实现的效果如图:



而不是这个样子的:



所以下面我们开始吧。


完整代码:

<template>
    <view>
        {{standard_time}}
    </view>
</template>

<script>
    export default {
        data () {
            return {
                UTC_time:"2021-04-20T22:54+08:00"
            }
        },
        computed:{
            standard_time:function(){
                //console.log(this.UTC_time)
                let temp = this.UTC_time.split('T')   //split()方法,以T字符为截断,划分成2块,返回一个数组
                const year = temp[0].slice(0,4)  //slice()截取字符,开始--结束
                const month = temp[0].slice(5,7)
                const day = temp[0].slice(8,10)
                
                const time = temp[1].slice(0,5) 
                return `${year}年${month}月${day}日 ${time}`
            }
        }
    }
</script>

效果:



过程剖析:

 let temp = this.UTC_time.split('T')

我们拿到的结构如下:



split('T')方法:表示以T字符作切割划分,返回一个数组。


那么temp[0]号位置拿到就是


slice(start,end)方法:截取字符串


方法三:过滤器filters的使用

如果我们拿到的是这样的时间。


模拟数据:



使用过滤的形式:

<text>发布时间:{{item.add_time | formateDate}}</text>




//同data平级
        filters:{
            formateDate(date){  
                const myDate = new Date(date)
                const year = myDate.getFullYear()
                const m = myDate.getMonth()+1
                const month = m.toString().padStart(2,0)//padStart的作用就是将4月变成04月,补0
                //但使用getDay()会出Bug,日期跟我们的对不上,所以需要这样子
                const day = date.slice(8,10)
                const hour = date.slice(11,13)
                const minute = date.slice(14,16)
                //let h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; 三元运算符补0
                return `${year}-${month}-${day} ${hour}:${minute}`
            }
        }

过滤后的结果


举报

相关推荐

0 条评论