日期格式化
moment().format('MMMM Do YYYY, h:mm:ss a');
moment().format('dddd');
moment().format("MMM Do YY");
moment().format('YYYY [escaped] YYYY');
moment().format();
相对时间
moment("20111031", "YYYYMMDD").fromNow(); // 11 年前
moment("20120620", "YYYYMMDD").fromNow(); // 10 年前
moment().startOf('day').fromNow(); // 17 小时前
moment().endOf('day').fromNow(); // 7 小时内
moment().startOf('hour').fromNow(); // 30 分钟前
日历时间
moment().subtract(10, 'days').calendar(); // 2022/10/17
moment().subtract(6, 'days').calendar(); // 上星期五17:29
moment().subtract(3, 'days').calendar(); // 上星期一17:29
moment().subtract(1, 'days').calendar(); // 昨天17:29
moment().calendar(); // 今天17:29
moment().add(1, 'days').calendar(); // 明天17:29
moment().add(3, 'days').calendar(); // 下星期日17:29
moment().add(10, 'days').calendar(); // 2022/11/06
day()
moment().days(Number|String);
获取或设置星期几。
此方法可用于设置星期几,其中星期日为 0、星期六为 6。
如果给定的值是 0 到 6,则结果的日期将会在当前(星期日至星期六)的星期。
如果超出范围,则它将会冒泡到其他星期。
moment().day(-7); // 上个星期日 (0 - 7)
moment().day(0); // 这个星期日 (0)
moment().day(7); // 下个星期日 (0 + 7)
moment().day(10); // 下个星期三 (3 + 7)
moment().day(24); // 从现在起第 3 个星期三 (3 + 7 + 7 + 7)
month()
获取或设置月份。
接受 0 到 11 之间的数字。 如果超出范围,则它将会冒泡到年份。
注意:月份是零索引的,因此一月是月份 0。
moment().months(Number|String);
year()
获取或设置年份。
接受 -270,000 至 270,000 之间的数字
moment().years(Number);
get()
字符串 getter
单位不区分大小写,且支持复数形式和缩写形式: year (years, y)、month (months, M)、date (dates, D)、hour (hours, h)、minute (minutes, m)、second (seconds, s)、millisecond (milliseconds, ms)。
moment().get('year');
moment().get('month'); // 0 至 11
moment().get('date');
moment().get('hour');
moment().get('minute');
moment().get('second');
moment().get('millisecond');
set()
通用 setter,接受单位作为第一个参数、值作为第二个:
单位不区分大小写,且支持复数形式和缩写形式: year (years, y)、month (months, M)、date (dates, D)、hour (hours, h)、minute (minutes, m)、second (seconds, s)、millisecond (milliseconds, ms)。
moment().set('year', 2013);
moment().set('month', 3); // 四月
moment().set('date', 1);
moment().set('hour', 13);
moment().set('minute', 20);
moment().set('second', 30);
moment().set('millisecond', 123);
moment().set({'year': 2013, 'month': 3});
add()
通过增加时间来改变原始的 moment。
这是一个相当稳健的功能,可以为现有的 moment 增加时间。 若要增加时间,则传入要增加的时间的键、以及要增加的数量。
moment().add(7, 'days');
也可以使用快捷键
moment().add(7, 'd');
| 键 | 快捷键 |
|---|---|
| years | y |
| quarters | Q |
| months | M |
| weeks | w |
| days | d |
| hours | h |
| minutes | m |
| seconds | s |
| milliseconds | ms |
也可以
moment().add(7, 'days').add(1, 'months'); // 链式
moment().add({days:7,months:1}); // 对象字面量
format()
moment().format(); // "2014-09-08T08:02:17-05:00" (ISO 8601,无小数秒钟)
moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm" moment().format("ddd, hA"); // "Sun, 3PM"
moment('gibberish').format('YYYY MM DD'); // "Invalid date"
| 令牌 | 输出 | |
|---|---|---|
| 月份 | 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 | |
| 季度 | Q | 1 2 3 4 |
| Qo | 1st 2nd 3rd 4th | |
| 月份的日期 | D | 1 2 ... 30 31 |
| Do | 1st 2nd ... 30th 31st | |
| DD | 01 02 ... 30 31 | |
| 年份的日期 | DDD | 1 2 ... 364 365 |
| DDDo | 1st 2nd ... 364th 365th | |
| DDDD | 001 002 ... 364 365 | |
| 星期几 | 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 | |
| 星期几(语言环境) | e | 0 1 ... 5 6 |
| 星期几(ISO) | E | 1 2 ... 6 7 |
| 年份的星期 | w | 1 2 ... 52 53 |
| wo | 1st 2nd ... 52nd 53rd | |
| ww | 01 02 ... 52 53 | |
| 年份的星期(ISO) | W | 1 2 ... 52 53 |
| Wo | 1st 2nd ... 52nd 53rd | |
| WW | 01 02 ... 52 53 | |
| 年份 | YY | 70 71 ... 29 30 |
| YYYY | 1970 1971 ... 2029 2030 | |
| Y | 1970 1971 ... 9999 +10000 +10001 注意:对于 9999 年以后的日期,这符合 ISO 8601 标准。 | |
| 周年 | gg | 70 71 ... 29 30 |
| gggg | 1970 1971 ... 2029 2030 | |
| 周年(ISO) | GG | 70 71 ... 29 30 |
| GGGG | 1970 1971 ... 2029 2030 | |
| 子午线 | A | AM PM |
| a | am pm | |
| 小时 | H | 0 1 ... 22 23 |
| HH | 00 01 ... 22 23 | |
| h | 1 2 ... 11 12 | |
| hh | 01 02 ... 11 12 | |
| k | 1 2 ... 23 24 | |
| kk | 01 02 ... 23 24 | |
| 分钟 | m | 0 1 ... 58 59 |
| mm | 00 01 ... 58 59 | |
| 秒钟 | s | 0 1 ... 58 59 |
| ss | 00 01 ... 58 59 | |
| 小数秒钟 | 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..] | |
| 时区 | z or zz | EST CST ... MST PST 注意:从 1.6.0 版本开始,z/zz 格式的令牌已从普通的 moment 对象中弃用。 在此处了解更多信息。 但是,如果将特定时区与 moment-timezone 插件一起使用,它们会起作用。 |
| Z | -07:00 -06:00 ... +06:00 +07:00 | |
| ZZ | -0700 -0600 ... +0600 +0700 | |
| Unix 时间戳 | X | 1360013296 |
| Unix 毫秒时间戳 | x | 1360013296123 |
fromNow()
moment([2007, 0, 29]).fromNow(); // 4 年前
calendar()
日历时间显示相对于给定的 referenceTime 的时间(默认为现在),但与 moment#fromNow 略有不同。
moment#calendar 会根据日期与 referenceTime 的日期(默认为今天)的接近程度,使用不同的字符串格式化日期。
| 上个星期 | 上星期一 2:30 |
|---|---|
| 前一天 | 昨天 2:30 |
| 同一天 | 今天 2:30 |
| 下一天 | 明天 2:30 |
| 下个星期 | 星期日 2:30 |
| 其他 | 7/10/2011 |
isSame()
moment('2010-10-20').isSame('2010-10-20'); // true
moment('2010-10-20').isSame('2009-12-31', 'year'); // false
moment('2010-10-20').isSame('2010-01-01', 'year'); // true
moment('2010-10-20').isSame('2010-12-31', 'year'); // true
moment('2010-10-20').isSame('2011-01-01', 'year'); // false
isAfter()
moment('2010-10-20').isAfter('2010-10-19'); // true
moment('2010-10-20').isAfter('2010-01-01', 'year'); // false
moment('2010-10-20').isAfter('2009-12-31', 'year'); // true
isBefore()
moment('2010-10-20').isBefore('2010-10-21'); // true
moment('2010-10-20').isBefore('2010-12-31', 'year'); // false
moment('2010-10-20').isBefore('2011-01-01', 'year'); // true
isSameOrBefore()
moment('2010-10-20').isSameOrBefore('2010-10-21'); // true
moment('2010-10-20').isSameOrBefore('2010-10-20'); // true
moment('2010-10-20').isSameOrBefore('2010-10-19'); // false
moment('2010-10-20').isSameOrBefore('2009-12-31', 'year'); // false
moment('2010-10-20').isSameOrBefore('2010-12-31', 'year'); // true
moment('2010-10-20').isSameOrBefore('2011-01-01', 'year'); // true
第二个参数
moment('2010-10-20').isSameOrBefore('2009-12-31', 'year'); // false
moment('2010-10-20').isSameOrBefore('2010-12-31', 'year'); // true
moment('2010-10-20').isSameOrBefore('2011-01-01', 'year'); // true
isSameOrAfter()
moment('2010-10-20').isSameOrAfter('2010-10-19'); // true
moment('2010-10-20').isSameOrAfter('2010-10-20'); // true
moment('2010-10-20').isSameOrAfter('2010-10-21'); // false
moment('2010-10-20').isSameOrAfter('2011-12-31', 'year'); // false
moment('2010-10-20').isSameOrAfter('2010-01-01', 'year'); // true
moment('2010-10-20').isSameOrAfter('2009-12-31', 'year'); // true
isBetween()
moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true
moment('2010-10-20').isBetween('2010-10-19', undefined); // true, 因为 moment(undefined) 等效于 moment()
moment('2010-10-20').isBetween('2010-01-01', '2012-01-01', 'year'); // false
moment('2010-10-20').isBetween('2009-12-31', '2012-01-01', 'year'); // true
获取当前周
moment().format("W")
获取当前周几
moment().format('E')
获取未来一周
export function getNextSevenDays() {
let arr = [];
for (let i = 0; i < 7; i++) {
const date = {
date: moment().add(i, 'days').format('YYYY-MM-DD'),
day: dealTime(moment().add(i, 'days').format('E')),
select: i === 0 //当前日期选中
}
arr.push(date);
}
return arr
}