1

我正在使用 FSEvents API 来获取从创建到现在的目录中的所有更改。

从我这样做的方式来看,我成功地获取了所有事件 ID,但是这些事件不包含时间戳。一开始我认为不可能将这些 id 与特定时间匹配,直到我在 CocoaDev 上读到这个:

事件被赋予一个唯一的 64 位 ID 而不是时间戳(由于自动合并发生在彼此之间 30 秒内的事件以节省空间),但您可以将其转换为近似时间。

但是我仍然不明白如何转换16738189为时间戳。有任何想法吗?

4

2 回答 2

2

我的猜测是您不会将其转换为时间戳。它说“您可以将其转换为近似时间。” 在您的事件处理程序中,您知道被调用的当前时间。由于事件是合并的,您可以用调用事件处理程序的时间标记第一个事件,并用前一个事件的一些增量标记后续事件。只要增量的总和小于合并时间(在这种情况下为 30 秒?),您就不应该有任何具有相同时间的。

于 2014-02-01T22:47:14.973 回答
1

我很确定 API 的使用方式是您要求系统在某个时间或 id 之后重播所有事件,您不必担心特定事件的时间,您只知道它们是完整且有序的。

如果这是一个近似时间,您可以尝试将其转换为自 unix 纪元以来基于秒的时间,该 API 使用该时间,而不是 2001 年 1 月 1 日更典型的 OS X 时间

于 2014-02-02T01:00:02.130 回答