Есть ли версия Java версии objective-c/iPhone currentTimeMillis()?

Мне нужно время для некоторых событий в приложении, над которым я работаю. В Java я имел обыкновение вызывать currentTimeMillis(), но, похоже, не существует версии в Objective-c. Есть ли способ проверить текущее время без создания NSDate, а затем разобрать этот объект каждый раз, когда мне нужна эта информация?

Спасибо -кода

Ответы

Ответ 1

Там также CFAbsoluteTimeGetCurrent(), который даст вам время в секундах с двойной точностью.

Ответ 2

[[NSDate date] timeIntervalSince1970] * 1000 возвращает то же значение, что и currentTimeMillis()

CFAbsoluteTimeGetCurrent() и [NSDate timeIntervalSinceReferenceDate] оба возвращают двойной старт с 1 января 2001 года 00:00:00 GMT.

Ответ 3

Чтобы получить очень дешевое очень точное время, вы можете использовать gettimeofday(), который является C-функцией ядра BSD. Пожалуйста, прочитайте man-страницу для получения полной информации, но вот простой пример:

struct timeval t;
gettimeofday(&t, NULL);

long msec = t.tv_sec * 1000 + t.tv_usec / 1000;

Ответ 4

Вместо gettimeofday() вы также можете использовать [NSDate timeIntervalSinceReferenceDate] (метод класса) и выполнять свои вычисления с этим. Но у них такая же проблема: они работают на "настенные часы". Это означает, что ваше измерение может быть выключено, если секунды прыжка добавляются во время вашего теста или при переходе между летним временем.

Вы можете использовать системный вызов Mach mach_absolute_time() для OS X и iOS. С информацией, возвращаемой mach_timebase_info(), это можно преобразовать в наносекунды.

Ответ 5

Правильный ответ: [[NSDate date] timeIntervalSince1970]; это даст вам текущую метку времени в миллисекундах.

Ответ, данный @Noah Witherspoon, возвращает текущую дату, но год не соответствует текущему году.