gpt4 book ai didi

java - 从 postgres 中检索带时区的时间戳后,日期增加 1。为什么?

转载 作者:行者123 更新时间:2023-11-29 14:18:02 25 4
gpt4 key购买 nike

我从 postgres 获取带有时区值的时间戳,在 java 中我将结果存储在 Timestamp 变量中。但是日期时间以某种方式发生了变化。我没有得到原始值。

表格

CREATE TABLE log_fail
(
user_name character varying(99) NOT NULL,
date_time timestamp with time zone,
CONSTRAINT pk_log_failed_login PRIMARY KEY (user_name)
)

表格数据

username = superman

date_time = 2016-12-12 10:06:39.582-08

sql

String uname = "超人";

String sql1 = "select date_time from log_failed_login where user_name = '"+ uname + "'";

  rs1 = conn.createStatement().executeQuery(sql1);

if (rs1.next())
{
Timestamp attempt_datetime = rs1.getTimestamp("date_time");
}

我得到的结果

attempt_datetime = 2016-12-12 23:36:39.582

最佳答案

问题是你的Java代码运行的机器上的时区是Asia/Calcutta,时间戳在转换成字符串的时候也是这样转换的。

您可以像这样在 Java 中更改时区:

java.util.TimeZone.setDefault(java.util.TimeZone.getTimeZone("Europe/Vienna"));

关于java - 从 postgres 中检索带时区的时间戳后,日期增加 1。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41116004/

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