我必须为DateFormatter
设置格式字符串,以便将NSString
转换为NSDate
。
字符串的格式为:2011-01-31 12:45:00 +0200
(y-m-d h:m:s timezone)
我正在使用格式:@"yyyy'-'MM'-'dd' 'HH':'mm':'ss' 'Z"
,但时区转换为+ 0000并调整小时,因此字符串如下:
2011-01-31 12:45:00 +0200
转换为:
2011-01-31 10:45:00 +0000
守则在这里:
- (NSDate *) dateForString: (NSString *)dateString
{
NSDateFormatter *dateFormatter;
NSLocale *enUSPOSIXLocale;
NSDate *date;
dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
enUSPOSIXLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
[dateFormatter setLocale:enUSPOSIXLocale];
[dateFormatter setDateFormat:@"yyyy'-'MM'-'dd' 'HH':'mm':'ss' 'Z"];
// [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
date = [dateFormatter dateFromString:dateString];
return date;
}
答案 0 :(得分:1)
这是使用NSDate时绝对预期的行为 - NSDate代表一个时刻,因此在您的情况下,2个日期/时间是等效的。
只需确保使用dateFormatter显示日期时,您可以将日期格式化程序上的时区设置为您希望的显示方式。
答案 1 :(得分:0)