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