vue之moment使用

前言

在日常开发中,我们常常会遇到以下几种场景:

  • 需要对日期进行非标准格式展示,如 :2021年5月11日星期二下午6点42分
  • 需要对日期进行处理,如:要取前24小时的时间 等

在这时候用js原生的new Date()处理就有些麻烦了,因此我们找到了moment这个类库

一、moment是什么?

moment 是一个 JavaScript 日期处理类库。
注:以下所有时间相对于现在时间:2021/05/11/18:42 星期二

1.日期格式化:

  • moment().format('MMMM Do YYYY, h:mm:ss a'); // 五月 11日 2021, 6:42:31 下午
  • moment().format('dddd'); // 星期二
  • moment().format("MMM Do YY"); // 5月 11日 21
  • moment().format('YYYY [escaped] YYYY'); // 2021 escaped 2021
  • moment().format(); //2021-05-11T18:06:42+08:00

2.相对时间:

  • moment("20111031", "YYYYMMDD").fromNow(); // 2011/10/31号相对于现在是: 10 年前
  • moment("20120620", "YYYYMMDD").fromNow(); // 2012/06/20号相对于现在是: 9 年前
  • moment().startOf('day').fromNow(); //当前日期开始即:2021/05/11/00:00:00相对于现在是: 19 小时前
  • moment().endOf('day').fromNow(); //当前日期结束即:2021/05/11/24:00:00相对于现在是: 5 小时内
  • moment().startOf('hour').fromNow(); //当前日期小时开始即:2021/05/11/18:00:00相对于现在是: 42分钟前

4.多语言支持:

  • moment.locale(); // zh-cn
  • moment().format('LT'); // 18:42
  • moment().format('LTS'); // 18:42:31
  • moment().format('L'); // 2021/05/11
  • moment().format('l'); // 2021/5/11
  • moment().format('LL'); // 2021年5月11日
  • moment().format('ll'); // 2021年5月11日
  • moment().format('LLL'); // 2021年5月11日下午6点42分
  • moment().format('lll'); // 2021年5月11日 18:42
  • moment().format('LLLL'); // 2021年5月11日星期二下午6点42分
  • moment().format('llll'); // 2021年5月11日星期二 18:42

二、使用步骤(例:默认查询时间24小时之前~当前时间)

1.引入库

$ npm install moment --save

2.在main.js中全局引入(也可单独在使用的文件中引入,具体看需求)

import moment from "moment"
Vue.prototype.$moment = moment;

3.在需要使用日期的地方使用

HTML中:

 <el-date-picker
    	v-model="timeRange"
        type="datetimerange"
        range-separator="至"
        start-placeholder="开始日期"
        end-placeholder="结束日期">
 </el-date-picker>

JS中:

 data() {
      return {
         timeRange:[],
      }
   },
  mounted(){
        let start = this.$moment()
            .subtract('1', 'd')
            .format('YYYY-MM-DD HH:mm:ss') //当前时间往前推1天(24小时):2021-05-10 18:42:53
        let end = this.$moment().format('YYYY-MM-DD HH:mm:ss') //当前时间:2021-05-11 18:42:53
        this.timeRange=[start,end]
   },  

三、日期格式

格式含义举例备注
yyyy2021同YYYY
M1不补0
MM01
d2不补0
dd02
dddd星期星期二
H小时324小时制;不补0
HH小时1824小时制
h小时312小时制,须和 A 或 a 使用;不补0
hh小时0312小时制,须和 A 或 a 使用
m分钟4不补0
mm分钟04
s5不补0
ss05
AAM/PMAM仅 format 可用,大写
aam/pmam仅 format 可用,小写

具体方法以及参数可详见moment官方文档

四、new Date() 相关

	let time = new Date();  //获取当前时间  Tue May 11 2021 18:42:51 GMT+0800 (中国标准时间)

    let year = time.getFullYear();  //获取年 2021
    let month = time.getMonth() + 1;  //获取月  5
    let day = time.getDate();    //获取天  11

    let h = time.getHours();   //获取小时  18
    let m = time.getMinutes();  //获取分钟  42
    let s = time.getSeconds();    //获取秒  51

    let weekDay = time.getDay();  //获取星期  2

五、时间插件moment.js如何设置中文语言环境 

// moment是一个专门处理时间日期的模块

 // 设置语言环境
moment.locale('zh-cn', {
  months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
  monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
  weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
  weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
  weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
  longDateFormat: {
    LT: 'HH:mm',
    LTS: 'HH:mm:ss',
    L: 'YYYY-MM-DD',
    LL: 'YYYY年MM月DD日',
    LLL: 'YYYY年MM月DD日Ah点mm分',
    LLLL: 'YYYY年MM月DD日ddddAh点mm分',
    l: 'YYYY-M-D',
    ll: 'YYYY年M月D日',
    lll: 'YYYY年M月D日 HH:mm',
    llll: 'YYYY年M月D日dddd HH:mm'
  },
  meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
  meridiemHour: function (hour, meridiem) {
    if (hour === 12) {
      hour = 0;
    }
    if (meridiem === '凌晨' || meridiem === '早上' ||
      meridiem === '上午') {
      return hour;
    } else if (meridiem === '下午' || meridiem === '晚上') {
      return hour + 12;
    } else {
      // '中午'
      return hour >= 11 ? hour : hour + 12;
    }
  },
  meridiem: function (hour, minute, isLower) {
    const hm = hour * 100 + minute;
    if (hm < 600) {
      return '凌晨';
    } else if (hm < 900) {
      return '早上';
    } else if (hm < 1130) {
      return '上午';
    } else if (hm < 1230) {
      return '中午';
    } else if (hm < 1800) {
      return '下午';
    } else {
      return '晚上';
    }
  },
  calendar: {
    sameDay: '[今天]LT',
    nextDay: '[明天]LT',
    nextWeek: '[下]ddddLT',
    lastDay: '[昨天]LT',
    lastWeek: '[上]ddddLT',
    sameElse: 'L'
  },
  dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
  ordinal: function (number, period) {
    switch (period) {
      case 'd':
      case 'D':
      case 'DDD':
        return number + '日';
      case 'M':
        return number + '月';
      case 'w':
      case 'W':
        return number + '周';
      default:
        return number;
    }
  },
  relativeTime: {
    future: '%s内',
    past: '%s前',
    s: '几秒',
    ss: '%d秒',
    m: '1分钟',
    mm: '%d分钟',
    h: '1小时',
    hh: '%d小时',
    d: '1天',
    dd: '%d天',
    M: '1个月',
    MM: '%d个月',
    y: '1年',
    yy: '%d年'
  },
  week: {
    // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
    dow: 1, // Monday is the first day of the week.
    doy: 4  // The week that contains Jan 4th is the first week of the year.
  }
})
 
//演示代码呈现:
 
//console.log(moment().format("YYYY-MM-DD HH:mm:ss"))   //2021-06-24 15:48:33
//console.log(moment().format('dddd') );    //星期四
//console.log(moment('20120624','YYYYMMDD').fromNow()  //9年前 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值