我正在开发一个允许用户添加日历条目的网站,在主页面上,所有用户都可以看到这些条目,其中包含一些文字,说明这些条目是最新的,例如
入场1:5分钟
入场2:7小时
入场3:4天
我遇到的问题是每个人都可能处于不同的时区.我已决定将所有时间/日期存储在GMT中.
我正在捣乱的是,当用户提交日历条目时,请参阅2009年1月1日上午10:30我然后需要确定这个日期时间在GMT中的存储时间.有没有办法知道用户的本地时区/时间是什么,所以我可以将它与服务器时间(GMT)进行比较以进行转换?
我真的希望这是有道理的.我希望我能做到这一点,而不必询问用户他们在哪个时区,或强迫用户输入GMT中的所有日期时间.
在将日期时间发送到服务器之前,将日期时间转换为GMT客户端(在JavaScript中,如果这是一个Web应用程序).让服务器只能使用GMT(我想说UTC).显示日期/时间也是一样的.将GMT/UTC发送到客户端,让JS本地化.在我看来,这是唯一完全安全的方法,因为你要让用户操作系统来确定时间应该是什么.
还有其他原因,如果您只需要知道客户端的时间是什么,您可以从中获取偏移量(可以通过JS等检索).但是,如果您需要在历史和未来日期/时间的不同位置准确的日期/时间,您最好让客户处理它.
PS:在我的TimeZone实现中,我还使用UNIX时间格式进行客户端和服务器之间的通信.这很容易解析,我相信它是JS的原生日期时间格式.我现在无法为您呈现我的代码,但应该相对容易谷歌.