如何处理服务器和本地时间的差异?

时间:2014-03-13 12:24:04

标签: java mysql datetime

我遇到服务器时间和客户端时间不同的问题。

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

我有很多使用这个时间的过滤函数,因此我使用datetime的所有函数都受到了影响。如何应对这种情况? Plz给我建议。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我认为

  

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

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