如何从Unix时间戳创建NSDate?
channel.startDate = [NSDate dateWithTimeIntervalSince1970:
(NSTimeInterval)[channelJson objectForKey:@"broadcastStartedTime"]];
我收到此错误:
104:错误:指针值用于a 预计浮点值
channels.startDate
是NSDate*
。键“broadcastStartedTime”的值是由SBJson解析器库转换为Number
或NSNumber
的Javascript NSDecimalNumber
。
答案 0 :(得分:55)
请改为尝试:
NSNumber *startTime = channelJson[@"broadcastStartedTime"];
channel.startDate = [NSDate dateWithTimeIntervalSince1970:[startTime doubleValue]];
您的值被捕获在指针类型NSNumber
中。 dateWithTimeIntervalSince1970
方法期待原始NSTimeInterval
(在封面下,是double
)。
答案 1 :(得分:7)
使用-doubleValue
:
// NSTimeInterval is just a typedef for double
NSTimeInterval interval = [[channelJson objectForKey:@"broadcastStartedTime"] doubleValue];
channel.startDate = [NSDate dateWithTimeIntervalSince1970:interval];
答案 2 :(得分:4)
您需要打开NSNumber:
channel.startDate = [NSDate dateWithTimeIntervalSince1970:[[channelJson objectForKey:@"broadcastStartedTime"] doubleValue]];
答案 3 :(得分:1)
NSTimeInterval
(即unix timestmap)转换为NSDate
:
let timeInterval = NSDate().timeIntervalSince1970 // the the unix timestamp
NSDate(timeIntervalSince1970: timeInterval)