Pav*_*tou 5 java sql postgresql timestamp scala
有人可以解释为什么会这样吗?为什么那段时间有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
Run Code Online (Sandbox Code Playgroud)
查看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
Run Code Online (Sandbox Code Playgroud)
1900 年,波兰时区与 UTC 的时差为 1 小时 24 分钟,即他们使用当地平均太阳时。那是在 1915 年 8 月 5 日引入标准时区之前。
您必须向 PostgreSQL 提供 a timestamp without time zone,它会在您的本地时区(偏移量为 1:24)进行解释。
然后有人(scala?)将此时间戳转换回您本地时区的时间戳,但错误地使用了一小时的偏移量。
我不知道如何准确地解决这个问题,但要么使用timestamp without time zone整个组件,要么修复认为 1900 年波兰时间与 UTC 偏移 1 小时的组件。
| 归档时间: |
|
| 查看次数: |
601 次 |
| 最近记录: |