java.sql.Timestamp 错误的时间解析

标签 java sql postgresql scala timestamp

谁能解释一下为什么会这样?为什么那个时间会有24分钟的偏移,如何处理?

Scala 2.12 和 Java 8。

scala> java.sql.Timestamp.valueOf("1900-01-01 00:59:00")
res22: java.sql.Timestamp = 1900-01-01 00:59:00.0

scala> java.sql.Timestamp.valueOf("1900-01-01 01:00:00")
res23: java.sql.Timestamp = 1900-01-01 01:24:00.0

scala> java.sql.Timestamp.valueOf("1900-01-01 01:14:00")
res24: java.sql.Timestamp = 1900-01-01 01:38:00.0

scala> java.sql.Timestamp.valueOf("1900-01-01 01:20:00")
res25: java.sql.Timestamp = 1900-01-01 01:44:00.0

scala> java.sql.Timestamp.valueOf("1900-01-01 01:23:00")
res26: java.sql.Timestamp = 1900-01-01 01:47:00.0

scala> java.sql.Timestamp.valueOf("1900-01-01 01:24:00")
res27: java.sql.Timestamp = 1900-01-01 01:24:00.0

scala> java.sql.Timestamp.valueOf("1900-01-01 01:30:00")
res28: java.sql.Timestamp = 1900-01-01 01:30:00.0

最佳答案

查看IANA时区数据库中的时区定义:

# Zone  NAME            GMTOFF  RULES   FORMAT  [UNTIL]
Zone    Europe/Warsaw   1:24:00 -       LMT     1880
                        1:24:00 -       WMT     1915 Aug  5 # Warsaw Mean Time
                        1:00    C-Eur   CE%sT   1918 Sep 16  3:00
                        2:00    Poland  EE%sT   1922 Jun
                        1:00    Poland  CE%sT   1940 Jun 23  2:00
                        1:00    C-Eur   CE%sT   1944 Oct
                        1:00    Poland  CE%sT   1977
                        1:00    W-Eur   CE%sT   1988
                        1:00    EU  CE%sT

1900 年,波兰的时区与 UTC 有 1 小时 24 分钟的时差,即他们使用的是本地平均太阳时。那是在 1915 年 8 月 5 日引入标准时区之前。

一定是您向 PostgreSQL 提供了一个没有时区的时间戳,它是在您本地的时区(偏移量为 1:24)解释的。

有人(scala?)然后将此时间戳转换回您本地时区的时间戳,但错误地使用了一个小时的偏移量。

我不知道如何解决这个问题,但是要么在整个过程中使用timestamp without time zone,要么修复认为波兰时间在 1900 年从 UTC 偏移 1 小时的组件。

关于java.sql.Timestamp 错误的时间解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47823081/

相关文章:

java - 通过蓝牙将数据从Arduino发送到Java程序

sql - 在两列之间选择日期

sql - 按特定顺序排序,包括NULL、postgresql

sql - 如果第二个表中有匹配项或没有匹配项,如何编写 SQL 查询来获取记录?

java - 正则表达式查找两个字符之间的内部匹配

java - 将 MongoDb 查询转换为 Java BasicDbObject

java - 多态性无法正常工作

sql - 从 XML 列中获取所有值

sql - Flash 可以与 SQL 集成吗?

postgresql - 在 PostgreSQL 中用作 NOOP 的是什么?