サーバーから取得した日付文字列をローカルNSDateに変換する必要があります。文字列は次のようになります。
"Fri, 30 Nov 2012 00:35:18 GMT"
しかし、今は11月30日金曜日の午前11:36です。文字列を意味のあるローカルNSDateに変換するにはどうすればよいですか?
私が見つけた:
しかし、それは逆のように見えます。
サーバーから取得した日付文字列をローカルNSDateに変換する必要があります。文字列は次のようになります。
"Fri, 30 Nov 2012 00:35:18 GMT"
しかし、今は11月30日金曜日の午前11:36です。文字列を意味のあるローカルNSDateに変換するにはどうすればよいですか?
私が見つけた:
しかし、それは逆のように見えます。
NSDateは常に日付を内部的にGMTで保存することに注意してください。次に、日付フォーマッタを使用して、ローカルタイムゾーンに文字列を作成します。この場合、文字列から開始するため、最初に日付フォーマッタを使用して日付を作成してから、もう一度使用してローカルタイムゾーン(タイムゾーンがデフォルトでない場合)に文字列を作成する必要があります。指定)。
NSString *dateString = @"Fri, 30 Nov 2012 00:35:18 GMT";
NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat = @"EEE, dd MM yyyy HH:mm:ss zzz";
NSDate *date = [dateFormatter dateFromString:dateString];
NSString *localDateString = [dateFormatter stringFromDate:date];
NSLog(@"%@", localDateString);
// Results: Thu, 29 11 2012 19:35:18 EST
NSDateFormatter
書式設定文字列と一緒に使用するだけeee, dd MMM yyyy HH:mm:ss zzz
です。最後のZにより、文字列からタイムゾーンが読み取られます。
したがって、QA1480が与えられた場合、サンプルコードは次のようになります。
NSLocale *usLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setLocale:usLocale];
[formatter setDateFormat:@"eee, dd MMM yyyy HH:mm:ss zzz"];
_createdAt = [formatter dateFromString:dateString];