【发布时间】:2017-09-22 09:54:42
【问题描述】:
我有一个以时间戳作为主键的 Sqlite 数据库,这个时间戳被记录为 UTC。根据我的时区和夏令时,我检查了记录是否正确。
我正在尝试在我的应用程序中显示这些时间戳,但以 Localtime 格式显示,为此我使用以下功能:SELECT ... datetetime (timestamp, 'localtime')。
但我得到的是我的本地时间加上 1 小时,我不知道为什么。 我电脑的本地时间是正确的,我使用的是 Ubuntu 12.04 作为操作系统。
提前感谢您的建议。
【问题讨论】:
-
您使用的年份是 1970 年到 2037 年吗?
-
@Adam111p SQLite 适用于 0000 到 9999 之间的所有年份。
-
SELECT datetime('now'), datetime('now', 'localtime');的输出是什么? -
localtime_r() C 函数通常只适用于 1970 年到 2037 年之间的年份。对于此范围之外的日期,SQLite 尝试将年份映射到此范围内的等效年份,进行计算,然后映射一年前。这些函数仅适用于 0000-01-01 00:00:00 和 9999-12-31 23:59:59 之间的日期(朱利丹天数 1721059.5 到 5373484.5)。对于超出该范围的日期,这些函数的结果是未定义的。
-
您在哪个时区,以及哪些时间戳会给您带来问题?
标签: sqlite datetime utc dst localtime