3

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

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

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

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

4

3 回答 3

22

试试这个:

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

编辑更新:

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

以前的 :

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];
于 2013-01-03T06:55:38.530 回答
10

[NSDate dateWithTimeIntervalSince1970:timestamp]是正确的。似乎你的时间戳是错误的。

相反1357178589630,它应该是1357178589.

试试这里

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

只需将该值除以 1000。

于 2013-01-03T06:55:39.707 回答
2

试试这个代码..

NSDate *dateTraded = [NSDate dateWithTimeIntervalSince1970 :[[updates objectForKey:@"timestamp"] integerValue]];

和 Unix 时间戳以秒为单位,自 1970 年 1 月 1 日以来,您的值看起来像毫秒数。如果除以 1000,则得到 1264396813,根据http://www.onlineconversion.com/unix_time.htm

于 2013-01-03T06:58:12.407 回答