【问题标题】:Best way to deal with dates based on location. SQL/JS [duplicate]根据位置处理日期的最佳方式。 SQL/JS [重复]
【发布时间】:2014-03-13 09:56:31
【问题描述】:

简单场景:

John Doe 住在加利福尼亚并发表了评论。 Jane Doe 住在马里兰州并查看评论。

我习惯于处理基于本地的网站,通常使用 GETDATE()。处理此问题的最佳方法是什么,以便约翰和简根据他们的时间位置查看日期?我是否基于 javascript 函数向 SQL 查询发送参数以获取他们的时区?有没有更好的办法?

Facebook 就是一个很好的例子。他们如何处理所有不同的时区?是客户端吗?服务器端?等等

谢谢!

【问题讨论】:

  • GMT 时间或 Z 时间(祖鲁语)在任何地方都相同。时区调整只是演示级别的详细信息。

标签: javascript sql


【解决方案1】:

处理通常是两次。要在服务器端处理它,您需要可靠的时区信息。这通常是从用户个人资料页面中的时区偏好中获得的。

话虽如此,我们需要确保在客户端捕获并存储在 DB 中的所有日期数据都是 UTC 格式。 JS 函数对 UTC 日期时间有现成的支持。

当你存储时,你在 JS 中使用UTC() 方法来获取日期。

当显示回来时,您可以从 DB 中提供等效的时区(基于存储的用户时区数据),或者使用 JS 从浏览器区域设置中获取它,就像这样

<script type="text/javascript">
        function showDateInClientSideFormat(dValue)
        {
            var d = new Date()
            var n = d.getTimezoneOffset();
            var dateClientSide = new Date(dValue +n);
            return dateClientSide;
        }
    </script>

也可以在这里查看我的答案https://stackoverflow.com/a/21573366/1123226

【讨论】:

  • 谢谢。这很有帮助!
猜你喜欢
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 2020-09-12
  • 2020-10-24
相关资源
最近更新 更多