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 になります。

于 2013-01-03T06:58:12.407 に答える