Ios NSDateFormatter stringFromDate:返回本地时间而不是UTC/GMT
在我的iOS应用程序中,我有一个NSDate对象,该对象应转换为以UTC/GMT表示日期和时间的NSString: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:
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