4

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 がある場合、フォーマッタを設定するタイムゾーンをどのように知ることができますか?

4

1 に答える 1

2

NSDate は UTC/GMT タイムゾーンとして保存されます。したがって、それを文字列に変換するときは、文字列を表示するタイムゾーンを選択します。「正しい」答えはありません。それはあなたが表示したいものです。

于 2012-05-09T00:00:05.617 に答える