如何在iphone中将unix时间戳转换为nsdate

Ran*_*ani 3 iphone objective-c

可能重复:
从Unix时间戳创建NSDate

我有一个应用程序,我从json以unix时间戳格式接收日期.这是我从json'1357178589630'接收的时间戳.如何将此时间戳转换为正确的nsdate.I已使用以下代码进行转换但它是不能正常工作.这是我的代码:

double timestampval =  [[updates objectForKey:@"timestamp"] doubleValue];
NSTimeInterval timestamp = (NSTimeInterval)timestampval;
NSDate *updatetimestamp = [NSDate dateWithTimeIntervalSince1970:timestamp];
Run Code Online (Sandbox Code Playgroud)

使用datewithtimeIntervalSince1970将时间戳转换为nsdate时,在updatetimestamp变量中显示'44977-04-11 12:40:30 +0000'

Ano*_*dya 22

试试这个:

你可能得到的时间戳是毫秒而不是秒,所以你把它除以1000.

编辑更新:

double timestampval =  [[updates objectForKey:@"timestamp"] doubleValue]/1000;
NSTimeInterval timestamp = (NSTimeInterval)timestampval;
NSDate *updatetimestamp = [NSDate dateWithTimeIntervalSince1970:timestamp];
Run Code Online (Sandbox Code Playgroud)

上一篇:

double unixTimeStamp =1304245000;
NSTimeInterval timeInterval=unixTimeStamp/1000;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval];
NSDateFormatter *dateformatter=[[NSDateFormatter alloc]init];
[dateformatter setLocale:[NSLocale currentLocale]];
[dateformatter setDateFormat:@"dd-MM-yyyy"];
NSString *dateString=[dateformatter stringFromDate:date];
Run Code Online (Sandbox Code Playgroud)


Rik*_*esh 9

[NSDate dateWithTimeIntervalSince1970:timestamp]是正确的.似乎您的时间戳错了.

相反1357178589630它应该是1357178589.

试试这里.

更新:根据上面的马丁评论.

只需将值除以1000即可.