【问题标题】:Understanding basic use of moment for date checking了解时间检查的基本用法
【发布时间】:2021-09-23 20:53:22
【问题描述】:

请我是使用 moments 的新手,并且不完全了解 utcisBefore 方法的工作原理。

我有下面的代码返回false,我需要帮助理解为什么即使在逻辑上它应该是正确的,因为2021-07-112021-07-12之前

var moment = require('moment');

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

非常感谢任何指向资源的指针或返回 false 的原因。

【问题讨论】:

  • 你当地的时区是什么
  • @Chris Schaller,现在是 GMT + 1。

标签: time momentjs utc


【解决方案1】:

您当地的时区是什么?

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

momentjs 的全部意义在于将时区排除在比较之外,因此.isBefore() 将返回true 只有传入的值小于两个值转置到同一时区时的起始值。

在这种情况下,您的两个日期中的日期部分相等,并且之前的日期将返回 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 2012-04-20
    • 2016-05-17
    • 1970-01-01
    • 2016-08-26
    • 2018-01-17
    • 1970-01-01
    相关资源
    最近更新 更多