//获取系统当前时间
NSDate *currentDate = [NSDate date];
//用于格式化NSDate对象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//设置格式:zzz表示时区
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"];
//NSDate转NSString
NSString *currentDateString = [dateFormatter stringFromDate:currentDate];
NSLog(@"%@", currentDateString);
不要用NSLog输出来查看NSDate,NSDate本身存的就是UTC时间(无论你怎么换timeZone都不会有变化),可以将NSDate转换为string来查看,所以你用CST换成GMT就是ok的,(格林尼治时间已经不再被作为标准时间使用。现在的标准时间——协调世界时(UTC)——由原子钟提供),更多信息可以查看文档,可以用下列代码打印查看具体的情况
for (NSString *timeZone in [NSTimeZone knownTimeZoneNames]) {
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:timeZone]];
NSDate *currentDateStr = [dateFormatter dateFromString:@"Thu Aug 04 02:47:40 CST 2016"];
NSString *dateString = [dateFormatter stringFromDate:currentDateStr];
NSLog(@"date:%@,string:%@",currentDateStr,dateString);
}