我正在开发一款应用,让用户可以在其他时区创建日期/事件,因此我需要转换类似
的内容2014-12-01T19:00:00.000Z到任何特定时区,例如“美国/凤凰城”。
我用时间处理它:
moment.tz(dt, 'America/New_York').format();
输出:2014-12-01T14:00:00-05:00这不是我想要的。
我想要做的就是改变时区而不是时间,以便它变成2014-12-01T19:00:00-05:00
也许我可以在转换时区之前添加5的偏移量(取决于区域),以便它保持同一时间?也许有更好的方法?
谢谢,詹姆斯
答案 0 :(得分:1)
您应该认识到字符串中的Z
表示时间戳应该被解释为UTC。因此,如果您在不相应调整时间的情况下将其更改为其他偏移量,则实际上是在选择不同的时刻。通常,这不是正确的做法。
通过调整时间来匹配时区的偏移量,Moment正在做正确的事情。它将输入字符串解释为UTC,然后将其调整为提供的时区。
听起来您希望忽略 Z
并将时间视为特定时区中的已经。改变的最佳位置是最初生成字符串的位置。如果它不是UTC,则不应该将Z
放在最后。
但是,您当然可以在JavaScript中删除它并获得您要求的结果。
var s = "2014-12-01T19:00:00.000Z";
moment.tz(s.replace(/Z$/,''), 'America/New_York').format();
答案 1 :(得分:0)