gpt4 book ai didi

java - 如何重构我的日期/时间以允许根据用户的区域设置日期?

转载 作者:行者123 更新时间:2023-12-02 07:50:26 25 4
gpt4 key购买 nike

我的代码当前使用 java 日期。

Mysql 有日期时间列。

我想允许用户设置他们的时区,然后在我的应用程序中我将转换日期以反射(reflect)他们的时区。

我正在使用 Spring mvc。

我该怎么做?

最佳答案

MySQL 中的Datetime 类型没有与之关联的时区。相反,默认情况下 Connector/J(MySQL JDBC 驱动程序)使用服务器时区获取日期。有一个设置可以更改它,但我不知道它是否有文档记录,我必须查看源代码才能了解它是如何工作的。

我可以将用户的时区保存为 VARCHAR 的不同列,并在创建日期对象时使用它。如果您不想更改所有数据,可以使用服务器默认时区填充 time_zone 列,然后逐渐更改用户的时区。使用以下代码您可以获取 UTC 时间戳。日历/日期对象相当困惑,你最好使用 Joda Time .

ResultSet rs = null;

Date date = rs.getDate("date");

TimeZone userTimeZone = TimeZone.getTimeZone(rs.getString("time_zone"));

Calendar c = Calendar.getInstance(userTimeZone);
c.set(1900 + date.getYear(), date.getMonth(),
date.getDate(), date.getHours(),
date.getMinutes(), date.getSeconds());

//what you are actually interested in
long utcTimestamp = c.getTimeInMillis();

关于java - 如何重构我的日期/时间以允许根据用户的区域设置日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10286264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com