我在下面有以下方法,用于检索unixTimeStamp并将其从API调用转换为我可以轻松操作和使用的NSDate对象。出于某种原因,这会返回错误的值。一个例子是当unixTimeStamp是1385152832时,日期应该是
周五,2013年11月22日20:40:31 GMT 2013年11月22日美国东部时间下午3:40:31
但反而吐出:45852-09-07 08:13:52 EST。有谁知道为什么会这样?
-(NSDate *)messageDate
{
NSTimeInterval unixTimeStamp = [[self messageDateString] doubleValue];
NSDate *messageDate = [NSDate dateWithTimeIntervalSince1970:unixTimeStamp];
NSAssert(messageDate, @"messageDate should not be nil");
return messageDate;
}
答案 0 :(得分:21)
messageDateString
方法自纪元以来返回毫秒,而不是自纪元以来的秒数。查看调试器窗格中unixTimeStamp
的值。这是1384803782032.这大约是当前Unix时间戳的1000倍。
NSTimeInterval
以秒为单位,而不是毫秒。试试这个:
-(NSDate *)messageDate {
NSTimeInterval unixTimeStamp = [[self messageDateString] doubleValue] / 1000.0;
NSDate *messageDate = [NSDate dateWithTimeIntervalSince1970:unixTimeStamp];
NSAssert(messageDate, @"messageDate should not be nil");
return messageDate;
}