我有一个时刻对象,我需要对其应用时区,但不更改小时或分钟字段的值。例如,如果我的时刻包含日期“2013-10-10T15:00:00+00:00”,我希望能够将区域更改为“America/Los_Angeles”,这样当我打印得到“2013”的时刻时-10-10T15:00:00-07:00'
(对于那些熟悉 Joda 的人,我追求的是withZoneRetainFields()
功能)
这是一个带有基本设置的jsfiddle ,显示了问题。如何更改最后一项以提供所需的输出?
我有一个时刻对象,我需要对其应用时区,但不更改小时或分钟字段的值。例如,如果我的时刻包含日期“2013-10-10T15:00:00+00:00”,我希望能够将区域更改为“America/Los_Angeles”,这样当我打印得到“2013”的时刻时-10-10T15:00:00-07:00'
(对于那些熟悉 Joda 的人,我追求的是withZoneRetainFields()
功能)
这是一个带有基本设置的jsfiddle ,显示了问题。如何更改最后一项以提供所需的输出?
我建议查看 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;
};