在我的应用中,用户选择日期+时间和时区。此选择必须在他们自己的时区显示给其他用户,这意味着如果纽约的用户A在美国东部时间8月8日凌晨3:00选择,北京的用户B将看到此日期时间转换为中国标准时间(CST)。 / p>
要做到这一点,我想 - 好吧,我保存用户A的日期并告诉他从4个时区中选择。服务器端我使用时刻将其从EDT选项转换为UTC,并将其保存为数据库中的UTC,这样当我读取它时,我会根据自己的时区将其转换回其他用户。
这是一种正确的方法还是我过于复杂的事情?目的是用户A可以选择她想要的时区,数据库保存为标准化的UTC,目标用户可以在自己的时区看到。
(我使用node.js作为服务器端btw) 谢谢,
答案 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'