0

重複の可能性:
ISO 8601タイムスタンプをNSDateに変換する:UTCタイムオフセットをどのように処理しますか?

私はiPhoneアプリを書いています。これは、Ruby onRailsWebサービスから時間をもたらします。JSON応答から取得する時間文字列の形式は次のとおりです。"2012-12-01T01:01:00Z"これからシステムタイムゾーンベースの時間を取得したい。どのようにできるのか?

4

1 に答える 1

1

サーバーとアプリで時刻を一致させる必要がある場合は、JSON日付文字列をNSDateに変換するために使用する日付フォーマッターのタイムゾーンを設定して、Webサービスから取得するときにGMTを使用することができます。したがって、日付フォーマッタは次のように初期化する必要があります。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"YYYY-MM-dd'T'HH:mm:ss'Z'"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

次に、JSONから日付文字列を取得し、それを使用して日付を作成します。

NSDate *dateFromServer = [dateFormatter dateFromString:[json valueForKey:@"created_at"]]
// Do something with dateFromServer like save it to CoreData

その後、その日付を表示する場合は、現地時間で日付を表示するために使用する別の日付フォーマッターを作成するだけです。NSDateはデフォルトでシステムのタイムゾーンに設定され、正しい時刻が表示されます。

NSDateFormatter *displayDateFormatter = [[NSDateFormatter alloc] init];
[dispalyDateFormatter setDateFormat:@"MMM dd, YYYY"]; // ex. Jul 21, 2012

NSDate *dateFromCoreData = [managedObject valueForKey:@"CreatedAt"];
NSString *dateString = [displayDateFormatter stringFromDate:dateFromCoreData];
// Display your date string in a UILabel or Table View Cell, etc.

よろしくお願いします。

于 2012-09-22T05:31:06.430 に答える