Получить метку времени из идентификатора события FSEvents

Я использую FSEvents API, чтобы получить все изменения в каталоге с момента его создания до сих пор.

По тому, как я это делаю, я успешно получаю все идентификаторы событий, однако эти события не содержат меток времени. Сначала я думал, что невозможно сопоставить эти идентификаторы с определенным временем, пока я не прочитал это на CocoaDev:

События получают уникальный 64-битный идентификатор, а не метку времени (из-за автоматического объединения событий, которые происходят в течение 30 секунд друг с другом для экономии места), но вы можете преобразовать это в приблизительное время.

Однако я до сих пор не понимаю, как конвертировать 16738189 к отметке времени. Есть идеи?

2 ответа

Я предполагаю, что вы не конвертируете это в метку времени. Там написано: "Вы можете преобразовать это в приблизительное время". В вашем обработчике событий вы знаете текущее время, когда вам звонят. Поскольку события объединяются, вы можете пометить первый со временем, когда вызывается обработчик событий, и пометить последующие события некоторой дельтой из предыдущего. До тех пор, пока сумма дельт меньше, чем время объединения (в данном случае 30 секунд?), У вас не должно быть таких, которые имеют такое же время.

Я почти уверен, что способ использования API заключается в том, что вы просите систему воспроизвести все события через некоторое время или идентификатор, а не беспокоиться о времени определенного события, вы просто знаете, что они завершены и находятся в порядке.

если это приблизительное время, вы можете попытаться преобразовать его во время, основанное на секундах, начиная с эпохи Unix, которое использует этот API, а не более типичное время OS X 1 января 2001 года.

Другие вопросы по тегам