Ответ 1
Там также CFAbsoluteTimeGetCurrent()
, который даст вам время в секундах с двойной точностью.
Мне нужно время для некоторых событий в приложении, над которым я работаю. В Java я имел обыкновение вызывать currentTimeMillis(), но, похоже, не существует версии в Objective-c. Есть ли способ проверить текущее время без создания NSDate, а затем разобрать этот объект каждый раз, когда мне нужна эта информация?
Спасибо -кода
Там также CFAbsoluteTimeGetCurrent()
, который даст вам время в секундах с двойной точностью.
[[NSDate date] timeIntervalSince1970] * 1000
возвращает то же значение, что и currentTimeMillis()
CFAbsoluteTimeGetCurrent()
и [NSDate timeIntervalSinceReferenceDate]
оба возвращают двойной старт с 1 января 2001 года 00:00:00 GMT.
Чтобы получить очень дешевое очень точное время, вы можете использовать gettimeofday()
, который является C-функцией ядра BSD. Пожалуйста, прочитайте man-страницу для получения полной информации, но вот простой пример:
struct timeval t;
gettimeofday(&t, NULL);
long msec = t.tv_sec * 1000 + t.tv_usec / 1000;
Вместо gettimeofday()
вы также можете использовать [NSDate timeIntervalSinceReferenceDate]
(метод класса) и выполнять свои вычисления с этим. Но у них такая же проблема: они работают на "настенные часы". Это означает, что ваше измерение может быть выключено, если секунды прыжка добавляются во время вашего теста или при переходе между летним временем.
Вы можете использовать системный вызов Mach mach_absolute_time()
для OS X и iOS. С информацией, возвращаемой mach_timebase_info()
, это можно преобразовать в наносекунды.
Правильный ответ: [[NSDate date] timeIntervalSince1970]; это даст вам текущую метку времени в миллисекундах.
Ответ, данный @Noah Witherspoon, возвращает текущую дату, но год не соответствует текущему году.