Javascript在时区与momentjs之间转换

时间:2014-08-24 08:54:36

标签: javascript node.js datetime timezone momentjs

在我的应用中,用户选择日期+时间和时区。此选择必须在他们自己的时区显示给其他用户,这意味着如果纽约的用户A在美国东部时间8月8日凌晨3:00选择,北京的用户B将看到此日期时间转换为中国标准时间(CST)。 / p>

要做到这一点,我想 - 好吧,我保存用户A的日期并告诉他从4个时区中选择。服务器端我使用时刻将其从EDT选项转换为UTC,并将其保存为数据库中的UTC,这样当我读取它时,我会根据自己的时区将其转换回其他用户。

这是一种正确的方法还是我过于复杂的事情?目的是用户A可以选择她想要的时区,数据库保存为标准化的UTC,目标用户可以在自己的时区看到。

(我使用node.js作为服务器端btw) 谢谢,

1 个答案:

答案 0 :(得分:4)

您的方法是正确的:将数据库中的时间保存在数据库中,并根据用户的时区将其显示给用户。

momentjs可以帮助您完成此操作,但您需要为其提供历史时区更改文件。

检查http://momentjs.com/timezone/以获取进一步说明。

一旦你拥有了它,它就像

一样简单
var jun = moment("2014-06-01T12:00:00Z");
jun.tz('America/Los_Angeles').format('ha z');  // 5am PDT

另外:不要将用户时区存储为EDT,CST或-6。小时班次可能随着夏令时,冬季时间而变化......你需要存储奥尔森格式,' America / Los_Angeles'