Ios NSDateFormatter stringFromDate:返回本地时间而不是UTC/GMT

Ios NSDateFormatter stringFromDate:返回本地时间而不是UTC/GMT,ios,date,datetime,nsdate,nsdateformatter,Ios,Date,Datetime,Nsdate,Nsdateformatter,在我的iOS应用程序中,我有一个NSDate对象,该对象应转换为以UTC/GMT表示日期和时间的NSString: NSDateFormatter * dateTimeFormatter = [[NSDateFormatter alloc] init]; [dateTimeFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:

在我的iOS应用程序中,我有一个NSDate对象,该对象应转换为以UTC/GMT表示日期和时间的NSString:

NSDateFormatter * dateTimeFormatter = [[NSDateFormatter alloc] init];
[dateTimeFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
// OR  [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
// OR  [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
// OR  [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
// OR  [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
// OR  not specify the TimeZone at all...

NSString *result = [dateTimeFormatter stringFromDate:date];
当我设置断点并检查
date
时,它正确显示为
\uu NSDate*2015-08-25 14:03:57 UTC
。但是,结果字符串是
2015-08-25 16:03:57
,它与我的本地时区(CEST)中的日期相同

无论我尝试以UTC/GMT格式获取字符串的哪个解决方案,我总是获取本地版本的字符串


我找到的所有资料都表明,这应该有效。我的错误在哪里?

此代码应该可以工作:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[formatter setTimeZone:timeZone];

NSDate *now = [NSDate date];
NSString *dateAsString = [formatter stringFromDate:now];
我在代码中看到的唯一奇怪的事情是,在设置
NSTimeZone
时,使用
dateFormatter
而不是
dateTimeFormatter