Странное поведение с timeIntervalSince1970 - PullRequest
8 голосов
/ 29 мая 2009

Я наблюдаю странное поведение, пытаясь получить секунды с начала эпохи в цели C. Это:

NSString *nowTimestamp = [NSString stringWithFormat:@"%d", 
                             [[NSDate date] timeIntervalSince1970]];

Выводит 15907296, когда текущая временная метка должна быть 1243555623 (28.05.2009 @ 19:08 EST). Системное время на iPhone правильное. Я не могу понять по жизни, что я делаю неправильно. Любые рекомендации?

Ответы [ 3 ]

31 голосов
/ 29 мая 2009

timeIntervalSince1970 возвращает NSTimeInterval, который является typedef для double; % d не подходит для форматирования двойного (вы хотите% f).

5 голосов
/ 29 мая 2009

Поскольку возврат от [[NSDate date] timeIntervalSince1970]; является двойным, вы можете попробовать это:

NSString *nowTimestamp = [NSString stringWithFormat:@"%f", 
                         [[NSDate date] timeIntervalSince1970]];
1 голос
/ 29 мая 2009

Вы уверены, что результат от NSDate является десятичным целым числом? Документы говорят, что это двойной. Вы можете попробовать кастинг.

Кроме того, иногда вы возвращаете значение указателя вместо фактического значения, если что-то NSNumber под обложками, вам может понадобиться использовать intValue или doubleValue, чтобы получить фактическое содержание находится по адресу.

...