The*_*Art 5 objective-c nsdate unix-timestamp nstimeinterval
我有下面的方法,用于检索和调用从API调用的unixTimeStamp到我可以轻松操作和使用的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;
}
Run Code Online (Sandbox Code Playgroud)

rob*_*off 22
该messageDateString方法从纪元开始返回毫秒,而不是自纪元以来的秒.查看unixTimeStamp调试器窗格中的值.它是1384803782032.这大约是当前Unix时间戳的1000倍.
An NSTimeInterval以秒为单位,而不是毫秒.试试这个:
-(NSDate *)messageDate {
NSTimeInterval unixTimeStamp = [[self messageDateString] doubleValue] / 1000.0;
NSDate *messageDate = [NSDate dateWithTimeIntervalSince1970:unixTimeStamp];
NSAssert(messageDate, @"messageDate should not be nil");
return messageDate;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5236 次 |
| 最近记录: |