2011-09-21 4 views
5

このタイムスタンプを整形された日付文字列に変換するのは本当に苦労しています。 "1316625985"Objective-C:タイムスタンプを書式設定された日付/時刻に変換するのに役立ちます

をそしてここで私が作った機能です:

は、ここでタイムスタンプです

-(NSString*)timestamp2date:(NSString*)timestamp{ 
    NSString * timeStampString =timestamp; 
    //[timeStampString stringByAppendingString:@"000"]; //convert to ms 
    NSTimeInterval _interval=[timeStampString doubleValue]; 
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:_interval]; 
    NSDateFormatter *_formatter=[[NSDateFormatter alloc]init]; 
    [_formatter setDateFormat:@"dd/MM/yy"]; 
    return [_formatter stringFromDate:date]; 
} 

トラブルがあり、それは1972年に戻って日付を保持します! (2011年7月7日)これは2011年9月の日付なので間違っています...

誰もが解決策を提案できますか?事前に

多くのおかげで、

+0

NSCalendarとNSDateComponentsを使って日付オブジェクトを作成しようとしましたか?それが私が過去にやったことです。 –

+0

これで解決しましたか? – bryanmac

答えて

2

文字列(timestampString)とdouble値(_interval)が同じで、doubleValueが文字列のすべての文字を考慮に入れていることを確認しましたか?

おそらく二重の文字列の解釈は値を作っていますか?


は、あなたはまた、あなたがinterprettingているタイムスタンプが、それは1970年1月1日以来、1970年1月1日(とない日からの経過秒数をカウントする意味、本当にUNIXタイムスタンプであることを確認していますか?...かない秒しかし、別の日付以降?)

(たぶんあなたが解釈しようとしているタイムスタンプの値の一例を与える)

+0

彼は上記のタイムスタンプの例を挙げました。私はそれを試して、文字列とダブルは同じであるので、それはそうではありません。 – bryanmac

14

は、1970年1月1日以降をエポックていませんか?あなたはミリ秒のラインを残していないと確信していますか?

ロジックを実行したときに(ラインにmsを追加しないで)、それは機能しました。ここに私がやったことだ:

NSString * timeStampString = @"1316641549"; 
    NSTimeInterval _interval=[timeStampString doubleValue]; 
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:_interval]; 
    NSLog(@"%@", date); 

これは、出力:

2011-09-21 17:46:14.384 Crapletを[13218:707] 2011-09-21夜9時45分49秒0000

+0

ありがとう。私はここで眠っている。私は朝にそれを見なければならないでしょう。私は今、幸せな夢を持っているよ! – Eamorr

+0

クール - 上記のように日付をログアウトすると、書式設定の問題が発生していないことを確認できます。 – bryanmac

2

あなたはNSTimeIntervalに変換するのではなく、dateWithTimeIntervalSince1970:に直接[timeStampString doubleValue]を渡すことができます。

また、いくつかのNSLogステートメントを追加して、さまざまな点で値が何であるかを確認し、違いがどこにあるかを把握してください。

希望すると便利です。

1

NSIntervalを使用してインターバルを取得している間は、タイムスタンプが秒単位でミリ秒単位でないことを確認してください。ミリ秒単位の場合は、NSInterval値を1000で除算してから、フォーマットを試みてください。

4

同じようにあなたの[timeStampStringのdoubleValue]千を分割:

NSDate *date = [NSDate dateWithTimeIntervalSince1970:[timeStampString doubleValue]/1000.0]; 
NSDateFormatter *_formatter=[[NSDateFormatter alloc]init]; 
[_formatter setDateFormat:@"dd/MM/yy"]; 
return [_formatter stringFromDate:date]; 

または[timeStampString longLongValue]試す/1000.0代わり

グッドラック!

関連する問題