gpt4 book ai didi

java - 强制 Java 时区为 GMT/UTC

转载 作者:IT老高 更新时间:2023-10-28 11:39:18 28 4
gpt4 key购买 nike

无论机器上设置的时区如何,我都需要将任何与时间相关的操作强制为 GMT/UTC。在代码中有什么方便的方法吗?

为了澄清,我使用数据库服务器时间进行所有操作,但它根据本地时区格式化。

谢谢!

最佳答案

OP 回答了这个问题以更改正在运行的 JVM 的单个实例的默认时区,设置 user.timezone 系统属性:

java -Duser.timezone=GMT ... <main-class>

如果在从数据库 ResultSet 检索 Date/Time/Timestamp 对象时需要设置特定的时区,请使用 getXXX 方法的第二种形式,该方法采用 日历对象:

Calendar tzCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
ResultSet rs = ...;
while (rs.next()) {
Date dateValue = rs.getDate("DateColumn", tzCal);
// Other fields and calculations
}

或者,在 PreparedStatement 中设置日期:

Calendar tzCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
PreparedStatement ps = conn.createPreparedStatement("update ...");
ps.setDate("DateColumn", dateValue, tzCal);
// Other assignments
ps.executeUpdate();

这些将确保在数据库列不保留时区信息时,存储在数据库中的值是一致的。

java.util.Datejava.sql.Date 类以 UTC 格式存储实际时间(毫秒)。要在输出到另一个时区时将它们格式化,请使用 SimpleDateFormat。您还可以使用 Calendar 对象将时区与值关联:

TimeZone tz = TimeZone.getTimeZone("<local-time-zone>");
//...
Date dateValue = rs.getDate("DateColumn");
Calendar calValue = Calendar.getInstance(tz);
calValue.setTime(dateValue);

实用引用

https://docs.oracle.com/javase/9/troubleshoot/time-zone-settings-jre.htm#JSTGD377

https://confluence.atlassian.com/kb/setting-the-timezone-for-the-java-environment-841187402.html

关于java - 强制 Java 时区为 GMT/UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2627992/

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