質問

誰もがObjective-CでNSDateにJSON日(ティック)を変換する方法を知っていますか?誰かがいくつかのコードを投稿することができますか?

役に立ちましたか?

解決

私はここで推測しているが、あなたのJSON値は右、1970年以降のミリ秒数のですか?あなたは正しい時刻とNSDateオブジェクトを返すためにNSDateのdateWithTimeIntervalSince1970:メソッドを使用することができます。わずか数秒で間隔を表しており、ほとんどの場所でNSDate--ココア使用NSTimeIntervalにそれを渡す前に、秒にJSONのミリ秒数を変換することを確認します。

他のヒント

これは大体このように書きます:

// Input string is something like: "/Date(1292851800000+0100)/" where
// 1292851800000 is milliseconds since 1970 and +0100 is the timezone
NSString *inputString = [item objectForKey:@"DateTimeSession"];

// This will tell number of seconds to add according to your default timezone
// Note: if you don't care about timezone changes, just delete/comment it out
NSInteger offset = [[NSTimeZone defaultTimeZone] secondsFromGMT];

// A range of NSMakeRange(6, 10) will generate "1292851800" from "/Date(1292851800000+0100)/"
// as in example above. We crop additional three zeros, because "dateWithTimeIntervalSince1970:"
// wants seconds, not milliseconds; since 1 second is equal to 1000 milliseconds, this will work.
// Note: if you don't care about timezone changes, just chop out "dateByAddingTimeInterval:offset" part
NSDate *date = [[NSDate dateWithTimeIntervalSince1970:
                 [[inputString substringWithRange:NSMakeRange(6, 10)] intValue]]
                dateByAddingTimeInterval:offset];

(から https://gist.github.com/726910 の)

あなたはそれを行うことができるようにするために、クライアントのロケールを検出する必要があるだろう、とあなたのクライアントはそれを行う方法を知っている場合を除き、多くのポイントは、おそらくそこではありません。

NSDateのdescriptionWithLocale:あなたは別のロケールのためにそれをフォーマットする方法だろう。そしてtimeIntervalSince1970あなたは、MSがクライアントに返すために得るために1000を掛ける可能性があり、1970年以降のバック(秒)になります。これは、すべてのNSDateドキュメントでいます。

http://developer.apple .COM /ドキュメント/ココア/リファレンス/財団/クラス/ NSDate_Class /リファレンス/のreference.htmlする

このページによると: http://msdn.microsoft .COM / EN-US /ライブラリ/ system.datetime.ticks.aspx のようdateWithTimeIntervalSince1970:が自動的ティックで動作するように設定されていない1月1日、0001で始まるダニ。あなたはまだ、このメソッドを使用することができますが、違いを調整する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top