我有一个函数,它使用 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?当通过查看 Z 的缺失/存在从字符串转到 NSDate 时。但是如果我有一个 NSDate,我怎么知道将格式化程序设置为哪个时区?