在日常开发中,我们常常会遇到以下几种场景:
在这时候用js原生的new Date()处理就有些麻烦了,因此我们找到了moment这个类库
moment 是一个 JavaScript 日期处理类库。
注:以下所有时间相对于现在时间:2021/05/11/18:42 星期二
$ npm install moment --save
- import moment from "moment"
- Vue.prototype.$moment = moment;
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]
- },
| 格式 | 含义 | 举例 | 备注 |
| yyyy | 年 | 2021 | 同YYYY |
| M | 月 | 1 | 不补0 |
| MM | 月 | 01 | |
| d | 日 | 2 | 不补0 |
| dd | 日 | 02 | |
| dddd | 星期 | 星期二 | |
| H | 小时 | 3 | 24小时制;不补0 |
| HH | 小时 | 18 | 24小时制 |
| h | 小时 | 3 | 12小时制,须和 A 或 a 使用;不补0 |
| hh | 小时 | 03 | 12小时制,须和 A 或 a 使用 |
| m | 分钟 | 4 | 不补0 |
| mm | 分钟 | 04 | |
| s | 秒 | 5 | 不补0 |
| ss | 秒 | 05 | |
| A | AM/PM | AM | 仅 format 可用,大写 |
| a | am/pm | am | 仅 format 可用,小写 |
具体方法以及参数可详见moment官方文档
- 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是一个专门处理时间日期的模块
-
- // 设置语言环境
- 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年前