安装与引用
安装
1 | npm install moment --save |
引用
1 | import moment from 'moment'; |
自定义配置
获取当前语言
1 | moment.locale(); |
加载语言
1 | moment.locale('zh-cn'); |
UTC
获取UTC
1 | moment().utc(); |
UTC偏移量
1 | moment().utcOffset(); |
设置偏移量
以下是相同的
1 | moment().utcOffset("+08:00"); |
Moment和Date
相互转换
Date ==> Moment
1 | moment(new Date()) |
Moment ==> Date
1 | moment().toDate() |
是否 Moment 对象
1 | moment.isMoment() // false |
是否 Date 对象
1 | moment.isDate(); // false |
验证日期格式是否正确
1 | moment("not a real date").isValid(); // false |
初始化日期
字符串
1 | var day = moment("1995-12-25"); |
支持一下格式
1 | 2013-02-08T09 # An hour time part separated by a T |
字符串+格式化
1 | moment("12-25-1995", "MM-DD-YYYY"); |
对象方式
1 | moment({ hour:15, minute:10 }); |
Unix 偏移量(毫秒)
1 | var day = moment(1318781876406); |
取值
1 | moment().valueOf(); |
Unix 时间戳(秒)
1 | var day = moment.unix(1318781876); |
取值
1 | moment().unix(); |
Date对象
1 | var day = new Date(2011, 9, 16); |
数组
1 | moment([2010, 1, 14, 15, 25, 50, 125]); |
日期转字符串
比如
1 | moment().format(); // "2014-09-08T08:02:17-05:00" (ISO 8601) |
排除字符
1 | moment().format('[today] dddd'); // 'today Sunday' |
格式化字符串
| Token | Output | |
|---|---|---|
| Month | M | 1 2 … 11 12 |
| Mo | 1st 2nd … 11th 12th | |
| MM | 01 02 … 11 12 | |
| MMM | Jan Feb … Nov Dec | |
| MMMM | January February … November December | |
| Quarter | Q | 1 2 3 4 |
| Day of Month | D | 1 2 … 30 31 |
| Do | 1st 2nd … 30th 31st | |
| DD | 01 02 … 30 31 | |
| Day of Year | DDD | 1 2 … 364 365 |
| DDDo | 1st 2nd … 364th 365th | |
| DDDD | 001 002 … 364 365 | |
| Day of Week | d | 0 1 … 5 6 |
| do | 0th 1st … 5th 6th | |
| dd | Su Mo … Fr Sa | |
| ddd | Sun Mon … Fri Sat | |
| dddd | Sunday Monday … Friday Saturday | |
| Day of Week (Locale) | e | 0 1 … 5 6 |
| Day of Week (ISO) | E | 1 2 … 6 7 |
| Week of Year | w | 1 2 … 52 53 |
| wo | 1st 2nd … 52nd 53rd | |
| ww | 01 02 … 52 53 | |
| Week of Year (ISO) | W | 1 2 … 52 53 |
| Wo | 1st 2nd … 52nd 53rd | |
| WW | 01 02 … 52 53 | |
| Year | YY | 70 71 … 29 30 |
| YYYY | 1970 1971 … 2029 2030 | |
| Week Year | gg | 70 71 … 29 30 |
| gggg | 1970 1971 … 2029 2030 | |
| Week Year (ISO) | GG | 70 71 … 29 30 |
| GGGG | 1970 1971 … 2029 2030 | |
| AM/PM | A | AM PM |
| a | am pm | |
| Hour | H | 0 1 … 22 23 |
| HH | 00 01 … 22 23 | |
| h | 1 2 … 11 12 | |
| hh | 01 02 … 11 12 | |
| Minute | m | 0 1 … 58 59 |
| mm | 00 01 … 58 59 | |
| Second | s | 0 1 … 58 59 |
| ss | 00 01 … 58 59 | |
| Fractional Second | S | 0 1 … 8 9 |
| SS | 00 01 … 98 99 | |
| SSS | 000 001 … 998 999 | |
| SSSS … SSSSSSSSS | 000[0..] 001[0..] … 998[0..] 999[0..] | |
| Timezone | z or zz | EST CST … MST PST Note: as of 1.6.0, the z/zz format tokens have been deprecated. |
| Z | -07:00 -06:00 … +06:00 +07:00 | |
| ZZ | -0700 -0600 … +0600 +0700 | |
| Unix Timestamp | X | 1360013296 |
| Unix Millisecond Timestamp | x | 1360013296123 |
取值/赋值
日期和时间
1 | // 毫秒 |
年月日时分秒
1 | // 取值 |
星期的取值和赋值
周日为0
周六为6
1 | moment().day(-7); // last Sunday (0 - 7) |
注意:
因为计算的时候会把周日作为一周的第一天,所以我们要判断周日的情况
周一
1 | let date = moment("2022-12-11"); |
周日
1 | let date = moment("2022-12-11"); |
按区域标准
1 | // 比如周一是一星期的第一天 |
这种方式 获取本周一
跟预想的不一样,并没有和区域标准一样,不建议
1 | let date = moment("2022-12-11"); |
时间操作
| Key | Shorthand |
|---|---|
| years | y |
| quarters | Q |
| months | M |
| weeks | w |
| days | d |
| hours | h |
| minutes | m |
| seconds | s |
| milliseconds | ms |
加法
1 | moment().add(15, 'minutes') |
减法
1 | moment().subtract(7, 'days'); |
比较
1 | //之前 |
差值
1 | moment(this.endTime).diff(moment(this.startTime), 'years') |
返回浮点数
1 | moment(item2.startDate).diff(this.startTime, "minutes", true) |
对象克隆
1 | var a = moment([2012]); |
或者
1 | var a = moment([2012]); |