时间格式转换 - 最好用的前端组件moment

最近一个新的项目,因需求日期格式回显用户可设置,经过同行老司机指引发现Moment.js这一强大助力,感觉很好用!

1. 安装moment组件,也可以直接引入相关js代码

npm i moment -S

2. 使用

/** 
 * @param {String} date 需要转化的时间值,要求与ISO 8601格式匹配(不传入,默认使用当前时间);
 * @param {String} rule 需要转换的时间格式
*/  
moment(date).format(rule)

ISO 8601格式

时间格式规则如下(更多):

M1 2 ... 11 12
 Mo1月2日〜11日12日
 MM01 02 ... 11 12
 MMM1月2日... 11月11月
 MMMM1月2月... 11月12月
D1 2 ... 30 31
 Do1月2日... 30日31日
 DD01 02 ... 30 31
 DDD1 2 ... 364 365
 DDDD001 002 ... 364 365
周几d0 1 ... 5 6
 ddd星期一,星期二...
 dddd周一...周五周五
YY70 71 ... 29 30
 YYYY1970 1971 ... 2029 2030
 gg70 71 ... 29 30
 gggg1970 1971 ... 2029 2030
上午/下午AAM PM
 aam pm
小时H0 1 ... 22 23
 HH00 01 ... 22 23
 h1 2 ... 11 12
 hh01 02 ... 11 12
分钟m0 1 ... 58 59
 mm00 01 ... 58 59
s0 1 ... 58 59
 ss00 01 ... 58 59
Unix 时间戳X1360013296
Unix 毫秒时间戳x1360013296123

 

另外moment.js还提供了一套本地化格式如下:

标准时间精确至分钟LT8:30 PM
标准时间精确至秒LTS8:30:25 PM
年月日(月与日补0)L09/04/1986
年月日(月与日不补0)l9/4/1986
月日年(月为英文)LLSeptember 4,1986
 llSep 4,1986
月日年标准时间精确至秒(月为英文)LLLSeptember 4,1986 8:30 PM
 lllSep 4,1986 8:30 PM
周月日年标准时间精确至秒(周,月为英文)LLLLThursday, September 4 1986 8:30 PM
 llllThu, Sep 4 1986 8:30 PM

 

3. vue使用案例

html:

<template>
    <div id="test-ma">
        <div class="left">
            <el-select 
                v-model="rule" 
                placeholder="请选择"
                @change="dateChange">
                <el-option
                    v-for="item in options"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value">
                </el-option>
            </el-select>
        </div>
        <div class="rigth">
            <p>{{new Date()}}</p>
            <p>{{show}}</p>
        </div>
    </div>
</template>

 

javascript:

<script>
import moment from 'moment';
export default {
    data(){
        return{
            date:new Date(),
            rule:'',
            show:'',
            options:[
                {
                    label:'LT',
                    value:'LT'
                },{
                    label:'LTS',
                    value:'LTS'
                },{
                    label:'L',
                    value:'L'
                },{
                    label:'l',
                    value:'l'
                },{
                    label:'LL',
                    value:'LL'
                },{
                    label:'ll',
                    value:'ll'
                },{
                    label:'LLL',
                    value:'LLL'
                },{
                    label:'lll',
                    value:'lll'
                },{
                    label:'LLLL',
                    value:'LLLL'
                },{
                    label:'llll',
                    value:'llll'
                },{
                    label:'年-月-日',
                    value:'YYYY-MM-DD'
                },{
                    label:'日-月-年',
                    value:'DD-MM-YYYY'
                },{
                    label:'月-日-年',
                    value:'MM-DD-YYYY'
                },{
                    label:'年/月/日',
                    value:'YYYY/MM/DD'
                },{
                    label:'日/月/年',
                    value:'DD/MM/YYYY'
                },{
                    label:'月/日/年',
                    value:'MM/DD/YYYY'
                }
            ]
        }
    },
    methods:{
        dateChange(){
            this.show = moment(this.date).format(this.rule);
        }
    }
}
</script>

 

效果图:

 

ps:更多关于moment.js的相关内容可参考moment.js官网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值