2 回答
TA贡献1805条经验 获得超9个赞
不要理会那些。使用各种输出功能,例如.format()
。 请参阅有关此主题的Moment.js指南。
由于Date
对象的工作原理,内部时刻有一些怪癖。公共API中的所有函数都将它们考虑在内,但您可能不希望自己弄清楚它们。
尽管如此,我会详细说明他们的目的:
_i
是创建对象时使用的输入moment
。它可以是字符串,数字,数组或Date
对象。但是,如果
moment
传入另一个对象,_i
则会将其复制到该时刻_i
,并且还将复制其他属性。_i
永远不会成为一个moment
对象。_i
在创建当前时刻的情况下,也可以是未定义的moment()
。_d
是Date
支持moment
对象的对象的实例。如果您处于“本地模式”,那么
_d
将具有与对象展示的公共API相同的本地日期和时间。返回的时间戳getTime
或valueOf
将匹配的时间戳。如果您处于“UTC模式”,那么
_d
仍将具有与对象展示公共API时相同的UTC日期和时间。这可能会令人困惑,因为您需要查看getUTCDate
其他基于UTC的函数_d
才能看到它们匹配。这里的时间戳仍然匹配。如果你已经改变了时区偏移量,与
utcOffset
,zone
或tz
功能,则_d
值不能单独。它还必须考虑是否_offset
已定义。如果是,那么_d
必须首先通过偏移量来调整支持对象的时间戳。您可以在此处的valueOf
方法实现中看到此行为。
这是当前版本的这两个字段的行为(2.10.6,因为我正在写这个)。但是,还有其他字段,因为这些是内部字段,所以在将来的版本中行为可能会发生变化。特别是,请参阅问题#2616。
TA贡献1880条经验 获得超4个赞
作为@Matt答案的补充:
从chrome控制台查看此结果:
date1是片刻的有效对象:
如您所见,._ d和._i具有不同的值。因此,您最好在源代码中使用format()函数(如@Matt Johnson所写)。
添加回答
举报