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所寫)。
添加回答
舉報
