从Unix时间戳创建NSDate

时间:2011-04-29 02:32:19

标签: objective-c

如何从Unix时间戳创建NSDate?

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

我收到此错误:

  

104:错误:指针值用于a   预计浮点值

channels.startDateNSDate*。键“broadcastStartedTime”的值是由SBJson解析器库转换为NumberNSNumber的Javascript NSDecimalNumber

4 个答案:

答案 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)

在Swift中

NSTimeInterval(即unix timestmap)转换为NSDate

let timeInterval = NSDate().timeIntervalSince1970 // the the unix timestamp
NSDate(timeIntervalSince1970: timeInterval)