0

我有一个基于客户端-服务器的 java 应用程序。客户端在美国/太平洋时区运行,服务器在 UTC(我在 UTC 中保存数据库中的时间)

因此,例如,如果我将日期保存为太平洋时间 09:00 小时,它将在数据库中保存为 UTC 时间 14:00 小时。

当我从 DB 读回这个时间时,夏令时被应用,现在它被转换为太平洋时间 08:00,而不是 09:00。

因此,从太平洋时间转换为 UTC 时,不考虑夏令时,但从 UTC 转换回太平洋时,应用的时间不一致。

在 DB 中,列类型是 TIME,而在 java 中,我将其读入日期对象。

我该如何处理?

4

3 回答 3

0

我认为你能做的最好的事情是确保尽可能多的时间处理完全不受时区影响。例如,自 Unix 纪元以来的毫秒。然后,您仅在将时区数据显示给用户之前应用它。

因此,在这种情况下,当您向服务器报告和从服务器检索时,不要应用任何本地时间假设。这样,就不可能对数据进行不匹配的时区或 DST 处理。

于 2012-05-25T16:14:30.390 回答
0

通常,数据库服务器决定时间、是否应用夏令时以及时区,UTC 是标准。

建议:

  1. 也许您想将客户端的时间设置为一个字符串字段,另一个字段用于 PST、EST 或其他时区。
  2. 为时区创建一个字段,并计算显示给客户端的时间。
于 2012-05-25T16:09:48.413 回答
0

除了所有这些,我建议您getLong手动使用并自己构造 Date 对象。

于 2012-05-25T17:40:14.483 回答