文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
时区转换
该问题的直接解决方案是将所有时间戳从存储的 UTC 单位转换为每个用户的本地时间。 这样一来,服务器可以继续使用 UTC 来保持时区的一致性,而针对每个用户量身定制的即时转换来解决可用性问题。 这个解决方案棘手的部分是要知道每个用户的位置。
许多网站都有一个配置页面供用户指定他们的时区。 这将需要我添加一个新的页面,其中我向用户显示带有时区列表的下拉列表。 也可能用户在第一次访问网站时,作为注册的一部分,会被要求输入他们的时区。
虽然该方案可以解决问题,但要求用户输入他们已经在其操作系统中配置的信息有点奇怪。 如果我能从他们的计算机中获取时区设置,似乎效率会更高。
事实证明,Web 浏览器可以获取用户的时区,并通过标准的日期和时间 JavaScript API 暴露它。 实际上有两种方法来利用 JavaScript 提供的时区信息:
- “老派”方法是当用户第一次登录到应用程序时,Web 浏览器以某种方式将时区信息发送到服务器。 这可以通过 Ajax ) 调用完成,或者更简单地使用 meta refresh tag 。 一旦服务器知道了时区,就可以将其保存在用户的会话中,或者将其写入用户在数据库中的条目中,然后在渲染模板时从中调整所有时间戳。
- “新派”的做法是不改变服务器中的东西,而在客户端中使用 JavaScript 来对 UTC 和本地时区之间进行转换。
两种选择都是有效的,但第二种选择有很大优势。 光是知道用户的时区并不足以以用户期望的格式呈现日期和时间。 浏览器还可以访问系统区域配置,该配置指定 AM/PM 与 24 小时制,DD/MM/YYYY 与 MM/DD/YYYY,以及许多其他文化或地区风格之类的东西。
如果这还不够,新派方法还有另一个优势,用一个开源的库来完成所有这些工作!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论