gpt4 book ai didi

java - 如何使用 mysql 日期时间列处理 java 日期

转载 作者:行者123 更新时间:2023-11-30 22:41:10 24 4
gpt4 key购买 nike

我有一个使用第三方 WebService 的系统。此 WebService 为我提供了很多关于票证的字段。其中三个字段是具有 Unix 时间戳格式的日期(下面我将给出带有值的示例……)。我使用 MyBatis 将这些字段保存在 MySQL 日期时间列中。

我的问题是当我向用户显示时间时,例如:

我从网络服务收到这个值:1435618800,使用this site转换为日期我得到这个值:Mon, 29 Jun 2015 23:00:00 GMT

在我的应用程序中,我从 Web 服务获取以分钟为单位的值 (1435618800),然后使用以下方法转换为日期:

Date date = Date.from( Instant.ofEpochSecond( Long.parseLong(StringValueFromWS)));

我将这个日期设置为一个票证对象,然后我将这个票证对象传递给 MyBatis 以保存到我的表中。当我查看表格内部时,我看到值 2015-06-29 20:00:00。当我显示此值时,用户看到以下时间:2015-06-29 17:00:00,他们应该看到 2015-06-29 20:00:00.

这是创建表:

CREATE TABLE `ticket` (
`id_ticket` int(11) NOT NULL AUTO_INCREMENT,
`open_date` datetime DEFAULT NULL,
`callback_date` datetime DEFAULT NULL,
PRIMARY KEY (`id_ticket`)
);

这是我从 mybatis 中插入和选择的 xml:

<select id="getTicket" parameterType="PaginationFilter" resultType="Ticket">
<![CDATA[
SELECT
t.id_ticket as 'id',
t.open_date as 'openDate',
t.callback_date as 'callbackDate'

from ticket as t
WHERE t.id_ticket = XXX
]]>
</select>

<insert id="insertTicket" parameterType="Ticket" useGeneratedKeys="true" keyProperty="id">
INSERT INTO ticket
(
`open_date`,
`callback_date`
)
VALUES
(
#{openDate},
#{callbackDate}
);
</insert>

我怀疑对此最优雅的解决方案是什么。我是否应该在插入 MySQL 之前将 GMT 偏移量添加/折扣到日期字段以在我的数据库中包含 GMT 00:00 还是有更好的解决方案?

我通过将我的约会时间增加 3 小时解决了这个问题,但我想知道更好的解决方案,因为我不喜欢这个。

一些附加信息:

  • Java 版本 1.8.0_45
  • Mybatis 3.0.5
  • MySQL 5.5.15
  • 我现在是 GMT -03:00(巴西 - 巴西利亚)
  • 为什么我要使用 Date.from(Instant.ofEpochSecond(timeInSeconds)) here

最佳答案

问题可能是您在将日期对象提供给 MyBaits 类时将其序列化。我不确定 MyBaits 接收和输出什么。

当您序列化它时,我假设序列化程序在日期上使用 toString() 方法,这会导致时间以本地时间显示。在这种情况下,解决方法是通过执行以下操作来设置时区:

Date d = Date.from(Instant.ofEpochSecond(1435618800));
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

您还应该通过执行以下操作找出 mysql 的时区:

mysql> SELECT @@global.time_zone, @@session.time_zone;

关于java - 如何使用 mysql 日期时间列处理 java 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31124529/

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