Amc*_*tty 3 javascript timezone datetime node.js momentjs
在我的应用程序中,用户选择日期 + 时间和时区。此选择必须显示给他们自己时区的其他用户,这意味着如果来自纽约的用户 A 选择美国东部时间 8 月 8 日凌晨 3:00,来自北京的用户 B 将看到此日期时间转换为中国标准时间 (CST)。
为此,我想 - 好的,我保存用户 A 的日期并告诉他从 4 个时区中进行选择。服务器端我使用时刻时区将其从他的 EDT 选择转换为 UTC,并将其保存为 UTC 在数据库中,以便当我阅读它时,我根据他们自己的时区将其转换回其他用户。
这是一种正确的方法还是我把事情复杂化了?目的是用户 A 可以选择她想要的时区,数据库保存为标准化的 UTC,目标用户在他自己的时区中看到。
(我在服务器端使用 node.js 顺便说一句)谢谢,
您的方法是正确的:在数据库中以 UTC 格式保存时间,并根据用户的时区将其显示给用户。
momentjs 可以帮助您做到这一点,但您需要为其提供历史时区更改的文件。
检查http://momentjs.com/timezone/进一步解释。
一旦你有了这个,就很简单
var jun = moment("2014-06-01T12:00:00Z");
jun.tz('America/Los_Angeles').format('ha z'); // 5am PDT
Run Code Online (Sandbox Code Playgroud)
另外:不要将用户时区存储为 EDT、CST 或 -6。小时轮班会随着夏令时、冬令时而改变,.. 你需要存储 Olson 格式,'America/Los_Angeles'