首页 > 解决方案 > JDBC:在 UTC 中插入时间戳

问题描述

我的部分表定义(MySQL)如下所示:

+-----------+----------+------+-----+---------+----------------+
| Field     | Type     | Null | Key | Default | Extra          |
+-----------+----------+------+-----+---------+----------------+
| ...       | ...      | ..   | ... | ...     | ...            |
| timestamp | datetime | YES  |     | NULL    |                |
| ...       | ...      | ..   | ... | ...     | ...            |
+-----------+----------+------+-----+---------+----------------+

我想使用 JDBC 更新时间戳字段。假设时间戳为UTC

在我的 Java 代码中,我正在获取时间戳字段,如下所示:

Timestamp datetime = new Timestamp(new Date().getTime());
        

java.util.Date的文档指出:
尽管 Date 类旨在反映协调世界时 (UTC),但它可能并不完全如此,这取决于 Java 虚拟机的主机环境。

不幸的是,在我的 Windows 10 环境(java 版本“1.8.0_231”)中,Date 对象反映了我的本地时区。因此,添加到数据库的时间戳是本地时区,而不是 UTC。


Q) 如何获取 UTC 时间戳,以便将正确的值添加到数据库中?

标签: javajdbc

解决方案



推荐阅读