gpt4 book ai didi

Java:从数据库到毫秒的日期/时间,小时消失

转载 作者:可可西里 更新时间:2023-11-01 08:48:14 24 4
gpt4 key购买 nike

我对日期和时区有疑问。

我有一个 MySQL InnoDB 数据库,它包含两个字段 DATE(yyyy-MM-dd)TIME(HH:mm:ss)。这些被称为 UTC (0 GMT)。我的计算机基于 CET (+1 GMT)

dateObject 是此resultSet.getTime("date_field") ( java.sql.Date )

的结果

timeObject 是此resultSet.getDate("time_field") ( java.sql.Time )

的结果

在数据库中 DATE 存储为 2014-02-22 和 TIME 15:00

System.out.println("Untouched "+dateObject+" "+timeObject);

long date = dateObject.getTime();
long time = timeObject.getTime();

System.out.println("Touched "+new Date(date+time));

结果如下:

Untouched 2014-02-22 15:00:00
Touched Sat Feb 22 14:00:00 CET 2014

为什么从 Touched 输出中跳过一小时?我期待以下内容:

Untouched 2014-02-22 15:00:00
Touched Sat Feb 22 15:00:00 CET 2014

为了弄清楚事情,我还尝试了以下内容:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(new Date(date+time)));

结果:

2014-02-22 14:00:00

总而言之。我希望 GMT+1 显示 16:00(本地时间),GMT+0 显示 15:00

最佳答案

我想我确实回答了一个问题(记住数据库中的 timeObject 是 UTC 的 15:00:00):

TimeZone tz = TimeZone.getTimeZone("Gmt0");
SimpleDateFormat sdfFull = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdfFull.setTimeZone(tz);

Date updateDate = sdfFull.parse(dateObject.toString()+" "+timeObject.toString());

System.out.println(updateDate);

结果如我所愿:

Sat Feb 22 16:00:00 CET 2014

关于Java:从数据库到毫秒的日期/时间,小时消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21609400/

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