4

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

(对于那些熟悉 Joda 的人,我追求的是withZoneRetainFields()功能)

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

4

1 回答 1

3

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

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

在不更改值的情况下切换时刻的时区

请注意,虽然我不建议这样做,但您也可以手动调整所需时区的日期。在下面的示例中,我在客户端的时区中创建一个日期,将日期对象上的时区更改为 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;
};
于 2015-12-02T18:58:56.110 回答