在 JavaScript 中使用 moment 来操作日期时间
2021-09-24 16:59:39
在写项目时,我们经常需要获取和操作时间, moment 提供了很多好用方法
## 安装 moment
```
$ npm install moment --save
```
## 引入
```
import moment from 'moment'
```
## 使用 moment
获取当前时间
```
//获取 当前时间
moment().format('YYYY-MM-DD HH:mm:ss'); //2020-08-25 10:23:59
//获取年份
moment().year(); //2020
moment().get('year'); //2020
//获取月份(0:一月份 11: 12月份 )
moment().month(); //7
moment().get('month'); //7
//获取一个月的某一天
moment().date(); //25
moment().get('date'); //25
//获取小时
moment().hours(); //11
moment().get('hours'); //11
//获取分钟
moment().minutes(); //11
moment().get('minutes'); //11
//获取秒数
moment().seconds(); //17
moment().get('seconds'); //17
//获取 今天星期几
moment().format('dddd'); //Tuesday
moment().format('d'); //2
moment().day(); //2(0~6 分别代表周日到周六)
moment().weekday(); //2(0~6 分别代表周日到周六)
moment().isoWeekday(); //2(1~7 分别代表周一到周日)
moment().get('date'); //2
moment().get('weekday'); //2
moment().get('isoWeekday'); //2
```
设置时间
```
//设置年份
moment().year(2019);
moment().set('year', 2019);
moment().set({year: 2019});
//设置月份
//0~11, 0: 1月份, 11: 12月份
moment().month(8);
moment().set('month', 8);
//设置 某个月中的某一天 某个周中的某一天 小时 分钟 秒数 同上,这里就不写了
```
格式化指定时间
```
//格式化指定时间
moment(time).format('YYYY-MM-DD');
```
时间差
```
now_time.diff(start_time,"hour"); //小时数
now_time.diff(start_time,"minute"); //分钟数
now_time.diff(start_time,"second"); //现在和初始时间相差的秒数
now_time.diff(start_time, 'months'); //月数
now_time.diff(start_time, 'weeks'); //周数
now_time.diff(start_time, 'days'); //天数
```
相对时间
```
//add 加时间
//subtract 减时间
moment().subtract(10, 'days').format('YYYY-MM-DD HH:mm:ss'); //2020-08-15 10:51:48
moment().subtract(6, 'days').format('YYYY-MM-DD HH:mm:ss'); //2020-08-19 10:51:48
moment().subtract(3, 'days').format('YYYY-MM-DD HH:mm:ss'); //2020-08-22 10:51:48
moment().subtract(1, 'days').format('YYYY-MM-DD HH:mm:ss'); //前一天:2020-08-24 10:51:48
moment().format('YYYY-MM-DD HH:mm:ss'); //当前时间:2020-08-25 10:51:48
moment().add(1, 'days').format('YYYY-MM-DD HH:mm:ss'); //后一天:2020-08-26 10:51:48
moment().add(3, 'days').format('YYYY-MM-DD HH:mm:ss'); //2020-08-28 10:51:48
moment().add(10, 'days').format('YYYY-MM-DD HH:mm:ss'); //2020-09-04 10:51:48
moment().subtract(1, 'year').format('YYYY-MM-DD HH:mm:ss'); //前一年:
moment().add(1, 'year').format('YYYY-MM-DD HH:mm:ss'); //后一年:
moment().subtract(1, 'hours').format('YYYY-MM-DD HH:mm:ss'); //前一小时:
moment().add(1, 'hours').format('YYYY-MM-DD HH:mm:ss'); //后一小时:
// startOf 设置为起始时间
moment("20111031", "YYYYMMDD").fromNow(); //9 years ago
moment().startOf('day').fromNow(); //11 hours ago
moment().startOf('hour').fromNow(); //an hour ago
moment().endOf('day').fromNow(); //in 13 hours
moment().endOf('hour').fromNow(); //in 15 minutes
//年初
moment().startOf('year').format('YYYY-MM-DD HH:mm:ss'); //2020-01-01 00:00:00
//月初
moment().startOf('month').format('YYYY-MM-DD HH:mm:ss'); //2020-08-01 00:00:00
//日初
moment().startOf('day').format('YYYY-MM-DD HH:mm:ss'); //2020-08-25 00:00:00
//周初 本周第一天(周日)
moment().startOf('week').format('YYYY-MM-DD HH:mm:ss'); //2020-08-23 00:00:00
//本周周一初
moment().startOf('isoWeek').format('YYYY-MM-DD HH:mm:ss'); //2020-08-24 00:00:00
```