gpt4 book ai didi

momentjs - Moment.js 内部对象什么是 "_d"与 "_i"

转载 作者:行者123 更新时间:2023-12-02 17:04:21 26 4
gpt4 key购买 nike

我正在使用 Moment.js 并使用 moment.hour(xx) moment.min(xx) 操作日期。

当我 console.log 时,我看到该对象包含 _d_i:_d 包含正确更改的 moment.hour()moment.min() 更改,但是 _i 对象包含原文吗?

k {_isAMomentObject: true, _i: Thu Dec 11 2014 20:34:00 GMT+0200 (South Africa Standard Time), _isUTC: false, _pf: Object, _locale: j…}
_d: Thu Dec 11 2014 14:00:00 GMT+0200
_i: Thu Dec 11 2014 20:34:00 GMT+0200

谁能帮我解答一下吗?

最佳答案

不用理会那些。请改用各种输出函数,例如 .format()See the Moment.js guidance on this topic 。简而言之,所有以下划线 (_) 前缀的字段都应被视为禁止使用。

由于 Date 对象的工作方式,Moment 内部存在一些怪癖。公共(public) API 中的所有函数都会考虑它们,但您可能不想自己弄清楚它们。

为了完整起见,我将详细说明它们的目的:

  • _i 是创建 moment 对象时使用的输入。它可以是字符串、数字、数组或 Date 对象。

    但是,如果传入另一个moment对象,则_i将被复制到该时刻_i,并且其他属性也会被复制复制过来了。 _i 永远不会是 moment 对象。

    在使用 moment() 创建当前时刻的情况下,

    _i 也可以是未定义的。

  • _d 是支持 moment 对象的 Date 对象的实例。

    如果您处于“本地模式”,则 _d 将具有与公共(public) API 中显示的 moment 对象相同的本地日期和时间。 getTimevalueOf 返回的时间戳也将匹配。

    如果您处于“UTC 模式”,则 _d 仍将具有与通过公共(public) API 显示的 moment 对象相同的 UTC 日期和时间。这可能会令人困惑,因为您需要查看 getUTCDate_d 上其他基于 UTC 的函数才能看到它们匹配。此处的时间戳仍然匹配。

    如果您使用 utcOffsetzonetz 函数更改了时区偏移量,则 _d 不能单独存在。它还必须考虑是否定义了_offset。如果是,则必须首先根据偏移量调整支持 _d 对象的时间戳。您可以在 valueOf 方法的实现中看到此行为 here .

    此外,如果您在应用不同的偏移量或时区时查看 _d 的字符串输出,将会出现 _d > 使用本地时区。但是,转换为本地时间只是 Date 对象的 toString 函数的副作用。 Moment 不会在其函数中使用该结果。

这是当前版本(我正在写这篇文章时为 2.10.6)以来这两个字段的行为。但是,还有其他字段,并且由于这些是内部字段,因此完全有可能在未来版本中更改行为。特别是,请参阅issue #2616 .

关于momentjs - Moment.js 内部对象什么是 "_d"与 "_i",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28126529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com