mysql 时间戳与java_在Java中处理MySQL日期时间和时间戳

BalusC对该问题进行了很好的描述,但缺乏一个好的端到端代码,用户可以自己选择并测试它。

最佳做法是始终将日期时间以UTC时区存储在DB中。Sql时间戳类型没有时区信息。

将datetime值写入sql db时//Convert the time into UTC and build Timestamp object.

Timestamp ts = Timestamp.valueOf(LocalDateTime.now(ZoneId.of("UTC")));

//use setTimestamp on preparedstatement

preparedStatement.setTimestamp(1, ts);

从DB读取值返回java时,在java.sql.Timestamp类型中读取它。

使用LocalDateTime类中的atZone方法将DateTime值设置为UTC时区中的时间。

然后,将其更改为您想要的时区。我在这里将它改为多伦多时区。ResultSet resultSet = preparedStatement.executeQuery();resultSet.next();Timestamp timestamp = resultSet.getTimestamp(1);ZonedDateTime timeInUTC = timestamp.toLocalDateTime().atZone(ZoneId.of("UTC"));LocalDateTime timeInToronto = LocalDateTime.ofInstant(timeInUTC.toInstant(), ZoneId.of("America/Toronto"));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值