2 回答

TA貢獻1805條經驗 獲得超9個贊
不要理會那些。使用各種輸出功能,例如.format()
。 請參閱有關此主題的Moment.js指南。
由于Date
對象的工作原理,內部時刻有一些怪癖。公共API中的所有函數(shù)都將它們考慮在內,但您可能不希望自己弄清楚它們。
盡管如此,我會詳細說明他們的目的:
_i
是創(chuàng)建對象時使用的輸入moment
。它可以是字符串,數(shù)字,數(shù)組或Date
對象。但是,如果
moment
傳入另一個對象,_i
則會將其復制到該時刻_i
,并且還將復制其他屬性。_i
永遠不會成為一個moment
對象。_i
在創(chuàng)建當前時刻的情況下,也可以是未定義的moment()
。_d
是Date
支持moment
對象的對象的實例。如果您處于“本地模式”,那么
_d
將具有與對象展示的公共API相同的本地日期和時間。返回的時間戳getTime
或valueOf
將匹配的時間戳。如果您處于“UTC模式”,那么
_d
仍將具有與對象展示公共API時相同的UTC日期和時間。這可能會令人困惑,因為您需要查看getUTCDate
其他基于UTC的函數(shù)_d
才能看到它們匹配。這里的時間戳仍然匹配。如果你已經改變了時區(qū)偏移量,與
utcOffset
,zone
或tz
功能,則_d
值不能單獨。它還必須考慮是否_offset
已定義。如果是,那么_d
必須首先通過偏移量來調整支持對象的時間戳。您可以在此處的valueOf
方法實現(xiàn)中看到此行為。
這是當前版本的這兩個字段的行為(2.10.6,因為我正在寫這個)。但是,還有其他字段,因為這些是內部字段,所以在將來的版本中行為可能會發(fā)生變化。特別是,請參閱問題#2616。

TA貢獻1880條經驗 獲得超4個贊
作為@Matt答案的補充:
從chrome控制臺查看此結果:
date1是片刻的有效對象:
如您所見,._ d和._i具有不同的值。因此,您最好在源代碼中使用format()函數(shù)(如@Matt Johnson所寫)。
添加回答
舉報