【问题标题】:How to convert server time of one timezone to client's local time?如何将一个时区的服务器时间转换为客户端的本地时间?
【发布时间】:2014-03-15 15:44:09
【问题描述】:

你好,
从客户端,我以 ISO 格式将当前日期的数据发送到服务器。我正在使用 new Date().toISOString() 用于在将日期时间发送到服务器之前编写它。当我将所有数据从服务器返回到客户端时,我会收到服务器时区中的日期时间。

例如:
在服务器上我有这样的日期值 - "2014-02-16T03:10:13.383"
在客户端应该转换为本地时间 - "2014-02-16T13:10:13.383"

我应该如何将服务器的日期时间转换为客户端的本地时间?

【问题讨论】:

  • 你想用javascript做到这一点吗? var currentTime = new Date() var hours = currentTime.getHours() var minutes = currentTime.getMinutes()
  • 你最好传递一个纪元时间戳。这不需要太多的操作
  • @josser 如果我的回答对您有用,或者您对回答有任何疑问,请告诉我。如果它对您有用,请接受我的回复作为正确答案 - 以便其他用户可以受益:知道答案有效并将问题标记为已回答。

标签: javascript datetime


【解决方案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 和另一个很棒的 SO 链接 How can I handle time zones in my webapp?

【讨论】:

    猜你喜欢
    • 2012-01-26
    • 2010-09-24
    • 2011-02-12
    • 2013-04-26
    • 1970-01-01
    • 2012-08-30
    • 2021-03-23
    • 2017-09-14
    • 1970-01-01
    相关资源
    最近更新 更多