• 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中全局引入(也可单独在使用的文件中引入,具体看需求)

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

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

    HTML中:

    1. <el-date-picker
    2. v-model="timeRange"
    3. type="datetimerange"
    4. range-separator="至"
    5. start-placeholder="开始日期"
    6. end-placeholder="结束日期">
    7. el-date-picker>

    JS中:

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

    三、日期格式

    格式含义举例备注
    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() 相关

    1. let time = new Date(); //获取当前时间 Tue May 11 2021 18:42:51 GMT+0800 (中国标准时间)
    2. let year = time.getFullYear(); //获取年 2021
    3. let month = time.getMonth() + 1; //获取月 5
    4. let day = time.getDate(); //获取天 11
    5. let h = time.getHours(); //获取小时 18
    6. let m = time.getMinutes(); //获取分钟 42
    7. let s = time.getSeconds(); //获取秒 51
    8. let weekDay = time.getDay(); //获取星期 2

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

    1. // moment是一个专门处理时间日期的模块
    2. // 设置语言环境
    3. moment.locale('zh-cn', {
    4. months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
    5. monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
    6. weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
    7. weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
    8. weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
    9. longDateFormat: {
    10. LT: 'HH:mm',
    11. LTS: 'HH:mm:ss',
    12. L: 'YYYY-MM-DD',
    13. LL: 'YYYY年MM月DD日',
    14. LLL: 'YYYY年MM月DD日Ah点mm分',
    15. LLLL: 'YYYY年MM月DD日ddddAh点mm分',
    16. l: 'YYYY-M-D',
    17. ll: 'YYYY年M月D日',
    18. lll: 'YYYY年M月D日 HH:mm',
    19. llll: 'YYYY年M月D日dddd HH:mm'
    20. },
    21. meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
    22. meridiemHour: function (hour, meridiem) {
    23. if (hour === 12) {
    24. hour = 0;
    25. }
    26. if (meridiem === '凌晨' || meridiem === '早上' ||
    27. meridiem === '上午') {
    28. return hour;
    29. } else if (meridiem === '下午' || meridiem === '晚上') {
    30. return hour + 12;
    31. } else {
    32. // '中午'
    33. return hour >= 11 ? hour : hour + 12;
    34. }
    35. },
    36. meridiem: function (hour, minute, isLower) {
    37. const hm = hour * 100 + minute;
    38. if (hm < 600) {
    39. return '凌晨';
    40. } else if (hm < 900) {
    41. return '早上';
    42. } else if (hm < 1130) {
    43. return '上午';
    44. } else if (hm < 1230) {
    45. return '中午';
    46. } else if (hm < 1800) {
    47. return '下午';
    48. } else {
    49. return '晚上';
    50. }
    51. },
    52. calendar: {
    53. sameDay: '[今天]LT',
    54. nextDay: '[明天]LT',
    55. nextWeek: '[下]ddddLT',
    56. lastDay: '[昨天]LT',
    57. lastWeek: '[上]ddddLT',
    58. sameElse: 'L'
    59. },
    60. dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
    61. ordinal: function (number, period) {
    62. switch (period) {
    63. case 'd':
    64. case 'D':
    65. case 'DDD':
    66. return number + '日';
    67. case 'M':
    68. return number + '月';
    69. case 'w':
    70. case 'W':
    71. return number + '周';
    72. default:
    73. return number;
    74. }
    75. },
    76. relativeTime: {
    77. future: '%s内',
    78. past: '%s前',
    79. s: '几秒',
    80. ss: '%d秒',
    81. m: '1分钟',
    82. mm: '%d分钟',
    83. h: '1小时',
    84. hh: '%d小时',
    85. d: '1天',
    86. dd: '%d天',
    87. M: '1个月',
    88. MM: '%d个月',
    89. y: '1年',
    90. yy: '%d年'
    91. },
    92. week: {
    93. // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
    94. dow: 1, // Monday is the first day of the week.
    95. doy: 4 // The week that contains Jan 4th is the first week of the year.
    96. }
    97. })
    98. //演示代码呈现:
    99. //console.log(moment().format("YYYY-MM-DD HH:mm:ss")) //2021-06-24 15:48:33
    100. //console.log(moment().format('dddd') ); //星期四
    101. //console.log(moment('20120624','YYYYMMDD').fromNow() //9年前

  • 相关阅读:
    DeiT学习笔记
    HTML跨年烟花
    如何做自媒体在一个月内赚到2万?
    LED行业MES系统解决方案到底是什么?看了本文就知道了
    第二课第一周第8节 风险得分计算+作业解析
    linux 搭建webserver-Goahead
    Elasticsearch(ES)简介及基本使用
    Zustand 和 React 上下文状态管理
    第一章 作业【数据库原理】
    python调用接口脚本
  • 原文地址:https://blog.csdn.net/slom_fxt/article/details/128128920