Moment.js

342 阅读8分钟

Home 中文

日期格式化

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');
快捷键
yearsy
quartersQ
monthsM
weeksw
daysd
hoursh
minutesm
secondss
millisecondsms

也可以

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"
令牌输出
月份M1 2 ... 11 12
Mo1st 2nd ... 11th 12th
MM01 02 ... 11 12
MMMJan Feb ... Nov Dec
MMMMJanuary February ... November December
季度Q1 2 3 4
Qo1st 2nd 3rd 4th
月份的日期D1 2 ... 30 31
Do1st 2nd ... 30th 31st
DD01 02 ... 30 31
年份的日期DDD1 2 ... 364 365
DDDo1st 2nd ... 364th 365th
DDDD001 002 ... 364 365
星期几d0 1 ... 5 6
do0th 1st ... 5th 6th
ddSu Mo ... Fr Sa
dddSun Mon ... Fri Sat
ddddSunday Monday ... Friday Saturday
星期几(语言环境)e0 1 ... 5 6
星期几(ISO)E1 2 ... 6 7
年份的星期w1 2 ... 52 53
wo1st 2nd ... 52nd 53rd
ww01 02 ... 52 53
年份的星期(ISO)W1 2 ... 52 53
Wo1st 2nd ... 52nd 53rd
WW01 02 ... 52 53
年份YY70 71 ... 29 30
YYYY1970 1971 ... 2029 2030
Y1970 1971 ... 9999 +10000 +10001 注意:对于 9999 年以后的日期,这符合 ISO 8601 标准。
周年gg70 71 ... 29 30
gggg1970 1971 ... 2029 2030
周年(ISO)GG70 71 ... 29 30
GGGG1970 1971 ... 2029 2030
子午线AAM PM
aam pm
小时H0 1 ... 22 23
HH00 01 ... 22 23
h1 2 ... 11 12
hh01 02 ... 11 12
k1 2 ... 23 24
kk01 02 ... 23 24
分钟m0 1 ... 58 59
mm00 01 ... 58 59
秒钟s0 1 ... 58 59
ss00 01 ... 58 59
小数秒钟S0 1 ... 8 9
SS00 01 ... 98 99
SSS000 001 ... 998 999
SSSS ... SSSSSSSSS000[0..] 001[0..] ... 998[0..] 999[0..]
时区z or zzEST 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 时间戳X1360013296
Unix 毫秒时间戳x1360013296123

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
}