2011-01-25 9 views
4

私はJSONの日付を持って、例えば:1295804021525、1970年JSONのNSDateに日付とバック

からのミリ秒数である私はNSDateには、この数値を変換するために、次のコードを書かれている:

long long seconds = [[payload valueForKey:@"starttime"]longLongValue]/1000; 
NSDate *somedate = [NSDate dateWithTimeIntervalSince1970:seconds]; 

正常に動作し、正しい日付を返します。最初に、これが変換を行う最善の方法であるかどうか疑問に思っています。

次は、ミリ秒フォーマットに変換してから、サーバーに返信するURLを入力する方法が不思議です。

私が持っている:

long long date = [somedate timeIntervalSince1970] * 1000; 
NSString *urlString = [NSString stringWithFormat:@"http://someurl?since=%qi",date]; 

は、これも動作しているようですが、私は私がするNSNumberを使用して同じ機能を得ることができるかと思いまして。

+0

'-valueForKey:'が必要ですか?代わりに '-objectForKey:'を使わないのはなぜですか? –

+0

この場合の 'payload'は' NSArray'ではなく 'NSDictionary'ですが、これがどのような利点をもたらすのか不思議です。 'CFTimeInterval'のためにありがとう – cjroebuck

答えて

11

元の変換では、1秒未満の精度が失われています。

CFTimeInterval seconds = [[payload valueForKey:@"starttime"] doubleValue]/1000.0; 

2番目のスニペットは問題ありません。

なぜNSNumberを使用するとどんな方法で役立つと思いますか分かりません。私が言及した変更を加えれば、これらのコードスニペットは単純で、うまく動作するはずです。

+0

+1。 –

+0

この文脈では、 'NSTimeInterval'は意味的には(NSDateを使用しているように)ちょっと意味がありますが、実際は' CFTimeInterval'と同じです。 –

+0

ありがとうケビン、私は今夜これを試してみましょう。私はそれがラップするプリミティブ型よりもプラットフォームに依存しない 'NSNumber'について何かを読んでいます。 – cjroebuck

関連する問題