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