在Java中处理多个时区



我需要存储来自不同国家的多个用户详细信息。如何在数据库中存储日期(以UTC格式)以及如何根据用户的时区向用户显示日期。我正在使用Java和mySQL

在MySQL中,在表中使用TIMESTAMP数据类型

对于每个用户,存储一个timezone列,VARCHAR(64)是该列的良好数据类型。当用户注册使用您的系统时,询问时区值。我的是America/New_York。你的可能是Asia/Kolkata,也可能不是。对于这种用户首选项设置的用户界面,WordPress.org软件有一个很好的例子。

最后,每当您代表用户从Java程序建立到DBMS的连接时,发出SQL命令

 SET SESSION time_zone='(whatever tz string the user gave you)'

在处理任何用户数据之前。

这将导致所有进入表的时间都转换为UTC,所有出来的时间都转换为本地时间。它适用于NOW()CURDATE()。同样,您必须使用TIMESTAMP而不是DATETIMEDATE数据类型。

确保您的服务器操作系统和默认MySQL时区设置为UTC。如果在开始将信息加载到数据库之前不这样做,则几乎不可能修复。如果你使用一个供应商来运行MySQL,坚持他们做得对,如果他们做得不对,就解雇他们。

相关内容

  • 没有找到相关文章

最新更新