【问题标题】:How to deal with Difference in Server and local time? [duplicate]如何处理服务器和本地时间的差异? [复制]
【发布时间】:2014-04-18 04:24:03
【问题描述】:

我对服务器时间和客户端时间的差异有疑问。

我在印度,我正在存储来自印度的日期时间/时间戳(假设为 14:00),但它以 +5.30 小时的时间保存在数据库中(即,如果本地时间为 14:00,则保存为 19: 30)。在显示时我得到了后一个值(即:19:30)。这可能是因为服务器时间的变化,服务器位于其他国家。

我有许多使用这个时间的过滤功能,因此我所有使用日期时间的功能都会受到影响。如何处理这种情况?请给我建议。

【问题讨论】:

    标签: java mysql datetime


    【解决方案1】:

    我认为 date 对象 在服务器和客户端之间以 毫秒 (EPOCH) 进行通信。当服务器获得 EPOCH 时,它计算的时间将根据其时区。最好通过String 进行日期/时间通信。

    所以客户端以"01/01/2014 14:00"(字符串值)的格式发送日期,服务器将其读取为String,并将其解析(使用格式MM/dd/yyyy HH:mm)到日期对象并保存。这样客户端和服务端就没有区别了。

    【讨论】:

    • 这不是完全相反吗? EPOCH 始终是绝对的,包含 no TZ spec 的字符串被解释为本地 TZ???
    • OP 希望将客户端中选择的时间保持在服务器上。使用 EPOCH,服务器将根据其当前时间计算时间。但是对于String,没有计算,只是解析(转换)
    • 要将 EPOCH 转换为字符串,您需要给定的 TZ。基于该 TZ,重新转换将导致相同的 EPOCH,那么这里的增益是多少?
    • But incase of String, there is no calculation 错误。
    【解决方案2】:

    我认为

    (即,如果当地时间是 14:00,则保留为 19:30)

    与您的服务器和本地系统的时区不匹配有关,与绝对时间的差异无关。由于 5.30 小时的不匹配,我假设数据库以 UTC 存储。您需要在与数据库的连接上设置正确的 TZ,或者将 DB 提供的时间戳转换为本地 TZ(无论是什么)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 2013-08-12
      • 2014-08-07
      • 2012-12-11
      • 2010-10-11
      相关资源
      最近更新 更多