0

很久以前,另一位用户写道,他正在开发一个库,以直接从 The Hit List 中读取数据

https://groups.google.com/d/msg/the-hit-list-users/arCPzjHaZeg/J6eatDiJWB4J

看起来他从来没有发布过任何东西。

我正在研究直接阅读 THL 的库,与 geektool 脚本一起使用,以避免 applescript 总是不得不启动 THL 来读取数据的开销。

我已经完成了部分任务,寻找尚未完成的任务

SELECT * FROM ZTASK where ZCOMPLETEDDATE is NULL ;

但是当我试图将其限制为现在到期的任务时,我感到很困惑。如果我查看任务架构,我会看到 ZDUEDATE 是时间戳

sqlite> .schema ztask

CREATE TABLE ZTASK ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZARCHIVED INTEGER, ZPRIORITY INTEGER, ZNOTES INTEGER, ZPARENTLIST INTEGER, ZPARENTTASK INTEGER, ZRECURRENCE INTEGER, ZACTUALTIME FLOAT, ZCOMPLETEDDATE TIMESTAMP, ZCREATEDDATE TIMESTAMP, ZDISPLAYORDER, ZDISPLAYORDER FLOATIMATION , ZMODIFIEDDATE 时间戳, ZSTARTDATE 时间戳, ZCALENDARSTOREUID VARCHAR, ZNOTESUID VARCHAR, ZSTATUS VARCHAR, ZTITLE VARCHAR, ZUID VARCHAR, ZLOCALINFODICTIONARY BLOB);

虽然当我尝试查询事物时,我似乎无法弄清楚它是哪种时间戳。它似乎不是 unixtime 或 juliantime。

例如

sqlite> SELECT * FROM ZTASK where ZCOMPLETEDDATE is NULL ;
...
ZDUEDATE = 363422378
...

从命中列表的 UI 中显示为 2012-07-07 的截止日期,但似乎不匹配

Unix time: 1341619200
Julian time: 2456115.5

还有其他建议吗?

4

2 回答 2

3

这是自 2001 年 1 月 1 日 GMT 以来的秒数。我自己没有选择这个值,这是 Core Data 和 Cocoa 保存日期的方式。

例如,您问题中 363422378 的值大约变为 11.5 年:

363422378 秒 / 60 / 60 / 24 / 365 = 11.524048009

于 2012-07-09T02:49:03.903 回答
1

这看起来像是自 OS X 绝对参考日期以来的秒数:

接收器与系统绝对参考日期(格林威治标准时间 2001 年 1 月 1 日的第一时刻)之间的间隔。如果接收方早于参考日期,则该值为负数。

提供了一个常数NSTimeIntervalSince1970,它是从 1970 年 1 月 1 日到参考日期 2001 年 1 月 1 日的秒数。它的值为978307200.0

于 2012-07-09T02:52:04.897 回答