保持时间字段,但用moment.js更改时区

时间:2013-11-04 11:59:28

标签: javascript timezone momentjs

我有一个片刻对象,我需要应用时区,但不改变小时或分钟字段的值。例如,如果我的时刻包含日期'2013-10-10T15:00:00 + 00:00',我希望能够将区域更改为'America / Los_Angeles',以便在我打印时获得'2013 -10-10T15:00:00-07:00'

(对于那些熟悉Joda的人,我在withZoneRetainFields()功能之后)

这是一个基本设置jsfiddle,显示问题。如何更改最后一项以便提供所需的输出?

1 个答案:

答案 0 :(得分:1)

我建议查看moment-timezone.js库来管理时区。它提供了一个有趣的.zone()函数,用于操作时刻日期对象的时区。

我已经在moment.js的GitHub问题中包含了相关问题的链接:

Switching timezone of moment without changing the values

请注意,虽然我不推荐它,但您也可以手动调整所需时区的日期。在下面的示例中,我在客户端时区中创建日期,将日期对象上的时区更改为UTC,然后修改日期值以便小时和分钟保持相同的值。

// Takes a moment.js date object, and converts
// it to UTC timezone, while maintaining the 
// selected hour/mins of the input date.
function convertDateToUTC (date){

    // Current timezone's offset. Minutes offset from UTC
    var offset = date.utcOffset();

    // Convert selected date to UTC
    date = date.utc();

    // Adjust the time to.
    date.add(offset, "minutes");

    return date;
};