如何更改 UTC 时刻.js对象以反映它已有的"zone"属性?



好的,所以我在开发人员工具中看到了这个时刻对象:

amoment: Moment _a: (7) [2017, 4, 21, 20, 15, 0, 0] _d: Sun May 21 2017 15:15:00 GMT-0500 (Central Daylight Time) {} _f: "MM/DD/YYYY h:mm A" _i: "5/21/2017 8:15:00 PM" _isAMomentObject: true _isUTC: true _isValid: true _locale: Locale {_calendar: {…}, _longDateFormat: {…}, _invalidDate: "Invalid date", ordinal: ƒ, _dayOfMonthOrdinalParse: /d{1,2}(th|st|nd|rd)/, …} _offset: -180 _pf: {empty: false, unusedTokens: Array(0), unusedInput: Array(1), overflow: -1, charsLeftOver: 3, …} _strict: false _z: Zone {name: "America/Halifax", abbrs: Array(229), untils: Array(229), offsets: Array(229), population: 390000} __proto__: Object

如您所见,文本表示形式为 5/21/2017 8:15:00 pm。这是UTC的正确时间,我注意到"_isUTC"是"真的"。

_d属性在 CDT 中显示该日期时间,我现在所在的位置。 _z属性显示设置为"America/Halifax"的区域对象 - 这是在其他位置动态设置的,但也是正确的

我想返回一个时刻阅读"5/21/2017 5:15:00 pm",因为这就是"美国/哈利法克斯"中的日期时间。

有很多时刻.js功能我没有找到正确的方法来做到这一点。

所有以下划线 (_( 开头的字段都是 Moment 的内部字段。 您根本不应该使用它们。 更多关于这个,这里,和这里。

若要从moment对象输出特定格式的字符串,请使用format函数。 例如:

yourMomentObject.format("M/D/YYYY h:mm:ss a")  //=> "5/21/2017 5:17:00 pm"

我最终做了new Date(amoment.format('YYYY-MM-DDTHH:mm:ss+00:00'));符合我的目的。该区域一直想在该区域中呈现日期,所以我不得不省略它。

最新更新