MomentJS教程:查询

isBefore() 2.0.0+

moment().isBefore(Moment|String|Number|Date|Array);
moment().isBefore(Moment|String|Number|Date|Array, String);

检查一个 moment 是否在另一个 moment 之前。 第一个参数会被解析为 moment(如果尚未解析)。

如果要将粒度限制为毫秒以外的单位,则将单位作为第二个参数传入。

由于第二个参数用于确定精度,且不仅仅是要检查的单个值,因此使用 day 将会检查年份、月份、日期。

moment('2010-10-20').isBefore('2010-12-31', 'year'); // false
moment('2010-10-20').isBefore('2011-01-01', 'year'); // true

与 moment#isAfter 和 moment#isSame 一样,moment#startOf 支持的任何时间单位也适用于 moment#isBefore

year month week isoWeek day hour minute second

如果未将任何内容传给 moment#isBefore,则它将会默认为当前时间。

注意:moment().isBefore() 具有未定义的行为,且不应被使用! 如果代码运行快速,则初始创建的 moment 将会与isBefore 中创建的要执行检查的相同,因此结果将会为 false。 但是,如果代码运行速度较慢,则有可能在 isBefore 中创建的 moment 可测量地在 moment() 中创建的之后,因此该调用将会返回 true

isSame() 2.0.0+

moment().isSame(Moment|String|Number|Date|Array);
moment().isSame(Moment|String|Number|Date|Array, String);

检查一个 moment 是否与另一个 moment 相同。 第一个参数会被解析为 moment(如果尚未解析)。

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

当包含第二个参数时,则它将会匹配所有等于或更大的单位。 传入 month 将会检查 month 和 year。 传入 day 将会检查 daymonth 和 year

moment('2010-01-01').isSame('2011-01-01', 'month'); // false, 不同的年份
moment('2010-01-01').isSame('2010-02-01', 'day');   // false, 不同的月份

与 moment#isAfter 和 moment#isBefore 一样,moment#startOf 支持的任何时间单位也适用于 moment#isSame

year month week isoWeek day hour minute second

如果两个 moment 的时区不同,则第一 moment 的时区会被用于比较。

// 注意:澳大利亚/悉尼在这些日期的 UTC+11:00
moment.tz("2018-11-09T10:00:00", "Australia/Sydney").isSame(moment.tz("2018-11-08T12:00:00", "UTC"), "day"); // false
moment.tz("2018-11-08T12:00:00", "UTC").isSame(moment.tz("2018-11-09T10:00:00", "Australia/Sydney"), "day"); // true

注意:moment().isSame() 具有未定义的行为,且不应被使用! 如果代码运行快速,则初始创建的 moment 将会与isSame 中创建的要执行检查的相同,因此结果将会为 true。 但是,如果代码运行速度较慢,则有可能在 isSame 中创建的 moment 可测量地在 moment() 中创建的之后,因此该调用将会返回 false

isAfter() 2.0.0+

moment().isAfter(Moment|String|Number|Date|Array);
moment().isAfter(Moment|String|Number|Date|Array, String);

检查一个 moment 是否在另一个 moment 之后。 第一个参数会被解析为 moment(如果尚未解析)。

moment('2010-10-20').isAfter('2010-10-19'); // true

如果要将粒度限制为毫秒以外的单位,则将单位作为第二个参数传入。

由于第二个参数用于确定精度,且不仅仅是要检查的单个值,因此使用 day 将会检查年份、月份、日期。

moment('2010-10-20').isAfter('2010-01-01', 'year'); // false
moment('2010-10-20').isAfter('2009-12-31', 'year'); // true

与 moment#isSame 和 moment#isBefore 一样,moment#startOf 支持的任何时间单位也适用于 moment#isAfter

year month week isoWeek day hour minute second

如果未将任何内容传给 moment#isAfter,则它将会默认为当前时间。

moment().isAfter(); // false

isSameOrBefore() 2.11.0+

moment().isSameOrBefore(Moment|String|Number|Date|Array);
moment().isSameOrBefore(Moment|String|Number|Date|Array, String);

检查一个 moment 是否在另一个 moment 之前或与之相同。 第一个参数会被解析为 moment(如果尚未解析)。

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

如果要将粒度限制为毫秒以外的单位,则将单位作为第二个参数传入。

由于第二个参数用于确定精度,且不仅仅是要检查的单个值,因此使用 day 将会检查年份、月份、日期。

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#isAfter 和 moment#isSame 一样,moment#startOf 支持的任何时间单位也适用于 moment#isSameOrBefore

isSameOrAfter() 2.11.0+

moment().isSameOrAfter(Moment|String|Number|Date|Array);
moment().isSameOrAfter(Moment|String|Number|Date|Array, String);

检查一个 moment 是否在另一个 moment 之后或与之相同。 第一个参数会被解析为 moment(如果尚未解析)。

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

如果要将粒度限制为毫秒以外的单位,则将单位作为第二个参数传入。

由于第二个参数用于确定精度,且不仅仅是要检查的单个值,因此使用 day 将会检查年份、月份、日期。

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

与 moment#isSame 和 moment#isBefore 一样,moment#startOf 支持的任何时间单位也适用于 moment#isSameOrAfter

year month week isoWeek day hour minute second

isBetween() 2.9.0+

//从 2.13.0 开始
moment().isBetween(moment-like, moment-like);
moment().isBetween(moment-like, moment-like, String);
moment().isBetween(moment-like, moment-like, String, String);
// 其中 moment-like 是 Moment|String|Number|Date|Array

//2.9.0 至 2.12.0
moment().isBetween(moment-like, moment-like);
moment().isBetween(moment-like, moment-like, String);
// 其中 moment-like 是 is Moment|String|Number|Date|Array

检查一个 moment 是否在其他两个 moment 之间,可选地检查指定的单位刻度(分钟,小时,日期等)。 这个匹配是排他的。 前两个参数会被解析为 moment(如果尚未解析)。

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#isSamemoment#isBeforemoment#isAfter 一样,moment#startOf 支持的任何时间单位也适用于 moment#isBetween。 年份、月份、星期、ISO星期、日期、小时、分钟、秒钟。

2.13.0 版本引入了包容性。 [ 表示包含。 ( 表示排除。 如果使用包容性参数,则必须传入两个指示符。

moment('2016-10-30').isBetween('2016-10-30', '2016-12-30', null, '()'); //false
moment('2016-10-30').isBetween('2016-10-30', '2016-12-30', null, '[)'); //true
moment('2016-10-30').isBetween('2016-01-01', '2016-10-30', null, '()'); //false
moment('2016-10-30').isBetween('2016-01-01', '2016-10-30', null, '(]'); //true
moment('2016-10-30').isBetween('2016-10-30', '2016-10-30', null, '[]'); //true

注意,如果 from 和 to 参数相同,但包容性参数不同,则将会返回 false。

moment('2016-10-30').isBetween('2016-10-30', '2016-10-30', null, '(]'); //false

如果未指定包容性参数,则 Moment 将会默认为 ()

isDST() 1.2.0+

moment().isDST();

moment#isDST 检查当前时刻是否为夏令时(daylight saving time)。

moment([2011, 2, 12]).isDST(); // false, 2011年3月12日不是 DST。
moment([2011, 2, 14]).isDST(); // true, 2011年3月14日是 DST。
// 此示例适用于 "en" 语言环境:https://www.timeanddate.com/time/dst/2011.html

isDSTShifted() 新增于 2.3.0,废弃于 2.14.0

moment('2013-03-10 2:30', 'YYYY-MM-DD HH:mm').isDSTShifted()

注意:从2.14.0版本开始,不推荐使用此功能。 修改矩对象后,它没有给出正确的答案。 欲了解更多信息,请参考moment / 3160

验证的另一个重要步骤是知道日期是否已由DST更改。 例如,在美国大部分地区:

这是因为夏时制将时间从2:00更改为3:00,因此2:30并不是实时时间。 结果时间取决于浏览器,可以向前或向后调整时间。 使用moment#isDSTShifted来测试这种情况。

注意:在2.3.0之前,处于这种情况的Moment对象始终在矩#isValid;中返回false。 他们现在返回true。

isLeapYear() 1.0.0+

moment().isLeapYear();

如果该年是闰年,则 moment#isLeapYear 返回 true,否则返回 false

moment([2000]).isLeapYear() // true
moment([2001]).isLeapYear() // false
moment([2100]).isLeapYear() // false

isMoment() 1.5.0+

要检查变量是否为 moment 对象,则使用 moment.isMoment()

moment.isMoment() // false
moment.isMoment(new Date()) // false
moment.isMoment(moment()) // true

从 2.11.0 版本开始,还可以通过 instanceof 运算符检测 moment 对象:

moment() instanceof moment // true

isDate() 2.9.0+

moment.isDate(obj);

要检查变量是否为原生 js Date 对象,则使用 moment.isDate()

moment.isDate(); // false
moment.isDate(new Date()); // true
moment.isDate(moment()); // false

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

(0)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2021年4月7日 下午3:43
下一篇 2021年4月7日 下午4:01

相关推荐

发表回复

登录后才能评论