Создать NSDate из метки времени Unix - PullRequest
43 голосов
/ 29 апреля 2011

Как мне создать NSDate из метки времени Unix?

channel.startDate = [NSDate dateWithTimeIntervalSince1970:
(NSTimeInterval)[channelJson objectForKey:@"broadcastStartedTime"]];

Я получаю эту ошибку:

104: ошибка: значение указателя используется где ожидалось значение с плавающей запятой

channels.startDate является NSDate*. Значение ключа "broadcastStartedTime" представляет собой Javascript Number, преобразованный в NSNumber или NSDecimalNumber библиотекой синтаксического анализатора SBJson .

Ответы [ 4 ]

55 голосов
/ 29 апреля 2011

Попробуйте вместо этого:

NSNumber *startTime = channelJson[@"broadcastStartedTime"];
channel.startDate = [NSDate dateWithTimeIntervalSince1970:[startTime doubleValue]];

Ваше значение захвачено указателем типа NSNumber. Метод dateWithTimeIntervalSince1970 предполагает примитив NSTimeInterval (который под покровом - double).

7 голосов
/ 29 апреля 2011

Использование -doubleValue:

// NSTimeInterval is just a typedef for double
NSTimeInterval interval = [[channelJson objectForKey:@"broadcastStartedTime"] doubleValue];
channel.startDate = [NSDate dateWithTimeIntervalSince1970:interval];
4 голосов
/ 29 апреля 2011

Вам нужно развернуть NSNumber:

channel.startDate = [NSDate dateWithTimeIntervalSince1970:[[channelJson objectForKey:@"broadcastStartedTime"] doubleValue]];
1 голос
/ 30 декабря 2015

NSTimeInterval (что является временной картой Unix) в NSDate преобразование в Swift:

let timeInterval = NSDate().timeIntervalSince1970 // the the unix timestamp
NSDate(timeIntervalSince1970: timeInterval)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...