Вопрос

Я вижу странное поведение при попытке получить секунды с момента появления epoch в objective C.Это:

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top