了解 moment 用于日期检查的基本用法

Understanding basic use of moment for date checking

拜托,我是 moments 的新手,并不完全理解 utcisBefore 方法的工作原理。

我有下面的代码 returns false,我需要帮助理解为什么即使从逻辑上讲它应该是真的,因为 2021-07-112021-07-12[=17 之前=]

var moment = require('moment');

moment.utc('2021-07-11').isBefore('2021-07-12', 'day') // returns false

任何指向资源的指针或返回 false 的原因都将不胜感激。

你当地的时区是什么?

您将本地 12 日与 UTC 11 进行比较。如果您的时区位于 西半球 半球,那么这是由于 'day' 参数导致的预期结果。当未指定时区时,momentJS 将采用本地时区。

momentjs 的全部意义在于将时区排除在比较等式之外,因此 .isBefore() 将 return true 当传入值的日期部分小于 两个值转置到同一时区时的起始值。

在这种情况下,您的两个日期的日期部分 相等 而 before before 将 return false。

如果您当地的时区是 UTC +2,那么我们可以这样分解您的代码:

var utc = moment.utc('2021-07-11'):
var local = moment('2021-07-12');
// Local in UTC : 2021-07-11T22:00:00Z
utc.isBefore(local, 'day') // False
utc.isEqual(local, 'day') // True