我正在使用Moment and Moment Timezone。
我有一个unix时间戳,然后我想添加时区偏移量,但偏移量也会增加到时间 - 我不想要这个:
var testDateTimeUnix = 1438352400;
// Fri, 31 Jul 2015 14:20:00
var testDateTimeUnixFormatted = moment(testDateTimeUnix, 'X').utc().format()
// "2015-07-31T14:20:00+00:00"
var testDateTimeWithTimezoneOffset = moment(testDateTimeUnixFormatted).utc().tz('Europe/Bucharest').format();
// “2015-07-31T17:20:00+03:00"
我想要的格式化日期是:
"2015-07-31T14:20:00+03:00"
任何帮助都会非常感激。
答案 0 :(得分:0)
我不确定你为什么要这样做...当显示17:20:00+03:00
时,这意味着3小时的偏移量包含在时间中。这意味着我知道在时刻或时刻 - 时区中没有任何方法可以提供帮助,因为它们总会将偏移应用到当下。
有一种hacky方式,非常脏,我不会推荐它用于生产代码,因为它依赖于内部结构,可能会破坏库中的其他东西(你已被适当警告:))
var moment = require( 'moment-timezone' ),
// your timestamp
tx = 1438352400;
// expressed as a moment in UTC
txu = moment( tx, 'X').utc();
// now get the UTC offset for Bucharest (in minutes)
txo = moment().tz('Europe/Bucharest').utcOffset();
// This is the dirty part and we hack the moment's internal structure. Bad.
// Set the offset to Bucharest's
txu._offset = txo;
// and display
console.log( txu.format() );
// 2015-07-31T14:20:00+03:00
```
所以这是可行的,但我不知道最终值代表什么时间。 Moment抵消时间是有原因的。