NSDateFormatter を使用して RFC3339 の NSString を NSDate に変換する関数がありますが、逆のタイムゾーンを考慮する方法がわかりません。
文字列から NSDate への変換の関連部分は次のとおりです。
// The result of a call to systemTimeZone is cached by the app automatically, if the user changes it that change isn't
// reflected unless resetSystemTimeZone is called to clear the cache.
[NSTimeZone resetSystemTimeZone];
NSLocale *enUSPOSIXLocale;
enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[sRFC3339DateFormatter setLocale:enUSPOSIXLocale];
if ([fromString hasSuffix:@"Z"] || [fromString hasSuffix:@"z"])
{
[sRFC3339DateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
}
else
{
[sRFC3339DateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
}
[sRFC3339DateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
私の質問は、NSDate から NSString に逆方向に変換する場合、setTimeZone を呼び出す方法をどのように知ることができるかということです。文字列から NSDate に移動するときは、Z の不在/存在を調べます。しかし、NSDate がある場合、フォーマッタを設定するタイムゾーンをどのように知ることができますか?