我正在尝试与 Things 3 的 SQLite 数据库进行交互,但遇到了一个我找不到标准的时间戳。
存储的一些值及其对应的日期: 131141760 - 1/1/2001 131731584 - 2010 年 1 月 1 日 132059264 - 2015 年 1 月 1 日 132649088 - 2024 年 1 月 1 日
奇怪的是,表中的其他数据存储为 UNIX 时间戳(即 1724349077.57524),所以我不确定为什么这些数据不同。也许他们正在使用一些非标准纪元?
我尝试偏移这些值以将它们与标准纪元对齐,但它们的偏移量都不同。如果有帮助,我可以提供数据库或其他日期。我联系了 Things 支持,他们只是告诉我这些值是 UNIX,但日期相差很远,而且它们与 UNIX 或 Cocoa Core Data 转换不一致。
您拥有的值似乎是年/月/日的按位编码。根据您提供的示例,它们可以这样解码:
with x(value) as (
values (131141760), (131731584), (132059264), (132649088), (132653184), (131150208), (132609920)
)
select
value,
(value / 65536) AS year,
((value / 4096) % 16) AS month,
((value / 128) % 32) AS day
from x;
输出:
value,year,month,day
131141760,2001,1,1
131731584,2010,1,1
132059264,2015,1,1
132649088,2024,1,1
132653184,2024,2,1
131150208,2001,3,3
132609920,2023,7,15
说明:
132609920 =
111111001110111011110000000 in binary =
11111100111 0111 01111 0000000
^ year ^ mo ^ day
= 2023 7 15