Как получить nsdate с точностью до миллисекунды? - PullRequest
20 голосов
/ 19 марта 2011

Мне нужно получить время с точностью до миллисекунды. Как я могу получить это от NSDate. В настоящее время, когда я NSLog время, он показывает только до секунд.

Ответы [ 3 ]

29 голосов
/ 19 марта 2011

Вам потребуется использовать приведенный ниже метод для конвертации в сек.в миллисекунды:

([NSDate timeIntervalSinceReferenceDate] * 1000)
6 голосов
/ 27 февраля 2014

Для тех, кто хочет получить время в миллисекундах (как в Java)

double timestamp = [[NSDate date] timeIntervalSince1970];
int64_t timeInMilisInt64 = (int64_t)(timestamp*1000);

(протестировано с iOS7 и симулятором iPhone с использованием Xcode 5)

4 голосов
/ 15 декабря 2012

Kees прав насчет вычисления миллисекунд, но вы можете рассмотреть возможность обработки только дробной части временного интервала, поскольку вы можете использовать NSDateComponents, чтобы получить все компоненты времени до секунды.Если вы используете что-то вроде следующего, вы можете добавить к нему компонент в миллисекундах:

/*This will get the time interval between the 2
  dates in seconds as a double/NSTimeInterval.*/
double seconds = [date1 timeIntervalSinceDate:date2];

/*This will drop the whole part and give you the
  fractional part which you can multiply by 1000 and
  cast to an integer to get a whole milliseconds
  representation.*/
double milliSecondsPartOfCurrentSecond = seconds - (int)seconds;

/*This will give you the number of milliseconds accumulated
  so far before the next elapsed second.*/
int wholeMilliSeconds = (int)(milliSecondsPartOfCurrentSecond * 1000.0);

Надеюсь, что это было полезно.

...