在我的应用程序中,用户选择日期+时间和时区。这个选择必须显示给其他在他们自己时区的用户,这意味着如果来自纽约的用户A选择了东部时间8月8日凌晨3:00,来自北京的用户B将看到这个日期时间转换为中国标准时间(CST)。
为了做到这一点,我想-好吧,我保存用户A的日期,并告诉他从4个时区中选择。在服务器端,我使用时刻时区将其从他的EDT选择转换为UTC,并将其保存为数据库中的UTC,以便当我读取它时,我根据其他用户自己的时区将其转换回其他用户。这是一个正确的方法,还是我把事情复杂化了?目的是用户A可以选择她想要的时区,数据库保存为标准化的UTC,目标用户在他自己的时区看到。
(我使用node.js服务器端btw)谢谢你,
您的方法是正确的:将UTC时间保存在数据库中,并根据用户的时区显示给用户。
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。小时轮班可以随夏令、冬令而改变……您需要存储Olson格式,'America/los - angeles '