MomentJS教程:取值/赋值

Moment.js 使用重载的 getter 和 setter 方法。 此模式类似与其在 jQuery 中的使用。

不带参数调用这些方法会作为 getter,而带参数调用则会作为 setter。

这些会映射到原生 Date 对象上的相应函数。

moment().seconds(30).valueOf() === new Date().setSeconds(30);
moment().seconds()   === new Date().getSeconds();

如果处于 UTC 模式中,则它们将会映射到 UTC 的等效项。

moment.utc().seconds(30).valueOf() === new Date().setUTCSeconds(30);
moment.utc().seconds()   === new Date().getUTCSeconds();

为了方便起见,从 2.0.0 版本开始,单数和复数的方法名称都会存在。

注意:当作为 setter 使用时,所有这些方法在都会改变原始的 moment。

注意:从 2.19.0 开始,将 NaN 传给任何 setter 都是没有操作的。 在 2.19.0 之前,它以错误的方式使 moment 无效。

millisecond() 1.3.0+

moment().millisecond(Number);
moment().millisecond(); // 数字
moment().milliseconds(Number);
moment().milliseconds(); // 数字

获取或设置毫秒。

接受 0 到 999 之间的数字。 如果超出范围,则它将会冒泡到秒钟。

second() 1.0.0+

moment().second(Number);
moment().second(); // 数字
moment().seconds(Number);
moment().seconds(); // 数字

获取或设置秒钟。

接受 0 到 59 之间的数字。 如果超出范围,则它将会冒泡到分钟。

minute() 1.0.0+

moment().minute(Number);
moment().minute(); // 数字
moment().minutes(Number);
moment().minutes(); // 数字

获取或设置分钟。

接受 0 到 59 之间的数字。 如果超出范围,则它将会冒泡到小时。

hour() 1.0.0+

moment().hour(Number);
moment().hour(); // 数字
moment().hours(Number);
moment().hours(); // 数字

获取或设置小时。

接受 0 到 23 之间的数字。 如果超出范围,则它将会冒泡到日期。

date() 1.0.0+

moment().date(Number);
moment().date(); // 数字
moment().dates(Number);
moment().dates(); // 数字

获取或设置月份的日期。

接受 1 到 31 之间的数字。 如果超出范围,则它将会冒泡达到月份。

注意:Moment#date 是月份的日期,而 Moment#day 是星期几。

注意:如果链接多个操作以构造一个日期,则应从年份、月份、日期等依次开始。 否则,可能会得到意外的结果,例如,当 day=31 并且当前月份只有 30 天时(同样适用于原生 JavaScript Date 的操作),返回的日期将会为当前月份的 30 号(有关详情,参阅月份)。

错误:moment().date(day).month(month).year(year)

正确:moment().year(year).month(month).date(day)

2.16.0 起废弃使用 moment().dates()。 改用 moment().date()

day() 1.3.0+

moment().day(Number|String);
moment().day(); // 数字
moment().days(Number|String);
moment().days(); // 数字

获取或设置星期几。

此方法可用于设置星期几,其中星期日为 0、星期六为 6。

如果给定的值是 0 到 6,则结果的日期将会在当前(星期日至星期六)的星期。

如果超出范围,则它将会冒泡到其他星期。

注意:Moment#date 是月份的日期,而 Moment#day 是星期几。

从 2.1.0 版开始,还支持星期名称。 这是在 moment 当前的语言环境中解析的。

moment().day("Sunday");
moment().day("Monday");

weekday() 2.1.0+

moment().weekday(Number);
moment().weekday(); // 数字

根据语言环境获取或设置星期几。

如果语言环境将星期一指定为一周的第一天,则 moment().weekday(0) 将会是星期一。 如果星期日是一周的第一天,则 moment().weekday(0) 将会是星期日。

与 moment#day 一样,如果超出范围,则它将会冒泡到其他星期。

// 当星期一是一周的第一天时。
moment().weekday(-7); // 上个星期一
moment().weekday(7); // 下个星期一
// 当星期日是一周的第一天时。
moment().weekday(-7); // 上个星期日
moment().weekday(7); // 下个星期日

isoWeekday() 2.1.0+

moment().isoWeekday(Number);
moment().isoWeekday(); // 数字

获取或设置 ISO 星期几,其中 1 是星期一、7 是星期日。

与 moment#day 一样,如果超出范围,则它将会冒泡到其他星期。

moment().isoWeekday(1); // 星期一
moment().isoWeekday(7); // 星期日

还支持星期名称。 这是在 moment 当前的语言环境中解析的。

moment().isoWeekday("Sunday");
moment().isoWeekday("Monday");

dayOfYear() 2.0.0+

获取或设置年份的日期。

接受 1 到 366 之间的数字。 如果超出范围,则它将会冒泡到年份。

week() 2.0.0+

moment().week(Number);
moment().week(); // 数字
moment().weeks(Number);
moment().weeks(); // 数字

获取或设置年份的星期。

由于不同的语言环境对年份中的星期的编号的定义不同,因此 Moment.js 添加了 moment#week 以获取/设置年份的本地化星期。

年份的星期取决于哪一天是星期的第一天(星期日、星期一等),以及哪一周是年份的第一周。

例如,在美国,星期日是星期的第一天。 1 月 1 日所在的星期是年份的第一周。

在法国,星期一是星期的第一天,且 1 月 4 日是年份的第一周。

moment#week 的输出将会取决于 moment 的语言环境。

当设置年份的星期时,将会保留星期几。

isoWeek() 2.0.0+

moment().isoWeek(Number);
moment().isoWeek(); // 数字
moment().isoWeeks(Number);
moment().isoWeeks(); // 数字

获取或设置年份的 ISO 星期。

当设置年份的星期时,将会保留星期几。

month() 1.0.0+

moment().month(Number|String);
moment().month(); // 数字
moment().months(Number|String);
moment().months(); // 数字

获取或设置月份。

接受 0 到 11 之间的数字。 如果超出范围,则它将会冒泡到年份。

注意:月份是零索引的,因此一月是月份 0。

从 2.1.0 版本开始,还支持月份名称。 这是在 moment 的当前语言环境中解析的。

moment().month("January");
moment().month("Feb");

在 2.1.0 版本之前,如果 moment 更改了月份,且新的月份没有足够的天数来保留该月份的当前日期,则它将会溢出到下个月份。

从 2.1.0 版本开始,已将其更改为限制在目标月份的月末。

// 2.1.0 之前
moment([2012, 0, 31]).month(1).format("YYYY-MM-DD"); // 2012-03-02
// 2.1.0 之后
moment([2012, 0, 31]).month(1).format("YYYY-MM-DD"); // 2012-02-29

2.16.0 废弃使用 moment().months()。 改用 moment().month()

quarter() 2.6.0+

moment().quarter(); // 数字
moment().quarter(Number);
moment().quarters(); // 数字
moment().quarters(Number);

获取季度(1 到 4)。

moment('2013-01-01T00:00:00.000').quarter() // 1
moment('2013-04-01T00:00:00.000').subtract(1, 'ms').quarter() // 1
moment('2013-04-01T00:00:00.000').quarter() // 2
moment('2013-07-01T00:00:00.000').subtract(1, 'ms').quarter() // 2
moment('2013-07-01T00:00:00.000').quarter() // 3
moment('2013-10-01T00:00:00.000').subtract(1, 'ms').quarter() // 3
moment('2013-10-01T00:00:00.000').quarter() // 4
moment('2014-01-01T00:00:00.000').subtract(1, 'ms').quarter() // 4

设置季度(1 到 4)。

moment('2013-01-01T00:00:00.000').quarter(2) // '2013-04-01T00:00:00.000'
moment('2013-02-05T05:06:07.000').quarter(2).format() // '2013-05-05T05:06:07-07:00'

year() 1.0.0+

moment().year(Number);
moment().year(); // 数字
moment().years(Number);
moment().years(); // 数字

获取或设置年份。

接受 -270,000 至 270,000 之间的数字。

2.6.0 废弃使用 moment().years()。 改用 moment().year()

weekYear() 2.1.0+

moment().weekYear(Number);
moment().weekYear(); // 数字

根据语言环境获取或设置周年。

因为第一周的第一天并不总是在一年的第一天,所以有时周年与月年会有所不同。

例如,在美国,包含 1 月 1 日的星期始终是第一周。 在美国,星期也从星期日开始。 如果 1 月 1 日是星期一,则 12 月 31 日与 1 月 1 日属于同一周,因此与 1 月 1 日的周年相同。 12 月 30 日则与 12 月 31 日是不同的周年。

isoWeekYear() 2.1.0+

moment().isoWeekYear(Number);
moment().isoWeekYear(); // 数字

获取或设置 ISO 周年。

weeksInYear() 2.6.0+

根据语言环境获取当前 moment 年份的周数。

isoWeeksInYear() 2.6.0+

moment().isoWeeksInYear();

根据 ISO 星期获取当前 moment 年份的周数。

get() 2.2.1+

moment().get('year');
moment().get('month');  // 0 至 11
moment().get('date');
moment().get('hour');
moment().get('minute');
moment().get('second');
moment().get('millisecond');

字符串 getter。 一般来说:

单位不区分大小写,且支持复数形式和缩写形式: year (years, y)、month (months, M)、date (dates, D)、hour (hours, h)、minute (minutes, m)、second (seconds, s)、millisecond (milliseconds, ms)。

set() 2.2.1+

moment().set(String, Int);
moment().set(Object(String, Int));

通用 setter,接受单位作为第一个参数、值作为第二个:

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});

单位不区分大小写,且支持复数形式和缩写形式: year (years, y)、month (months, M)、date (dates, D)、hour (hours, h)、minute (minutes, m)、second (seconds, s)、millisecond (milliseconds, ms)。

对象解析新增于 2.9.0

max() 2.7.0+

moment.max(Moment[,Moment...]);
moment.max(Moment[]);

返回给定的 moment 实例的最大值(最远的未来)。

例如:

var a = moment().subtract(1, 'day');
var b = moment().add(1, 'day');
moment.max(a, b);  // b

var friends = fetchFriends(); /* [{name: 'Dan', birthday: '11.12.1977'}, {name: 'Mary', birthday: '11.12.1986'}, {name: 'Stephan', birthday: '11.01.1993'}]*/
var friendsBirthDays = friends.map(function(friend){
    return moment(friend.birthday, 'DD.MM.YYYY');
});
moment.max(friendsBirthDays);  // '11.01.1993'

不带参数的函数会返回带有当前时间的 moment 实例。

从 2.10.5 版本开始,如果其中一个参数是无效的 moment ,则结果为无效的 moment。

moment.max(moment(), moment.invalid()).isValid() === false
moment.max(moment.invalid(), moment()).isValid() === false
moment.max([moment(), moment.invalid()]).isValid() === false
moment.max([moment.invalid(), moment()]).isValid() === false

min() 2.7.0+

moment.min(Moment[,Moment...]);
moment.min(Moment[]);

返回给定的 moment 实例的最小值(最远的过去)。

例如:

var a = moment().subtract(1, 'day');
var b = moment().add(1, 'day');
moment.min(a, b);  // a
moment.min([a, b]); // a

不带参数的函数会返回带有当前时间的 moment 实例。

从 2.10.5 版本开始,如果其中一个参数是无效的 moment ,则结果为无效的 moment。

moment.min(moment(), moment.invalid()).isValid() === false
moment.min(moment.invalid(), moment()).isValid() === false
moment.min([moment(), moment.invalid()]).isValid() === false
moment.min([moment.invalid(), moment()]).isValid() === false

作者:terry,如若转载,请注明出处:https://www.web176.com/momentjs/2376.html

(1)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2021年4月7日 下午4:31
下一篇 2021年4月7日 下午5:15

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注