我在iOS SDK中只找到了有关setDefaultTimeZone的非常老的条目,但没有解决问题的方法,setDefaultTimeZone根本不做任何事情。

NSTimeZone *germanTimeZone = [NSTimeZone timeZoneWithName:@"Europe/Berlin"];
[NSTimeZone setDefaultTimeZone:germanTimeZone];
NSLog(@"Berlin time: %@", [[NSDate date] descriptionWithLocale:nil]);

这应该导致类似:
Berlin time: 2014-06-30 15:58:34 +0200

但是结果很简单:
Berlin time: 2014-06-30 15:58:34 +0000

预先感谢您的任何提示或解决方案。

编辑:
好的,下面是我的工作代码。
NSTimeZone *germanTimeZone = [NSTimeZone timeZoneWithName:@"Europe/Berlin"];
[NSTimeZone setDefaultTimeZone:germanTimeZone];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mma"];
NSLog(@"Time: %@", [dateFormatter stringFromDate:[NSDate date]]);

最佳答案

尝试这个:

NSTimeZone* UTC = [NSTimeZone timeZoneWithName:@"UTC"];
[NSTimeZone setDefaultTimeZone:UTC];

并使用NSDateFormatter进行打印:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.timeZone = [NSTimeZone timeZoneWithName:@"Europe/Berlin"];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mma"];
NSLog(@"%@", [dateFormatter stringFromDate:[NSDate date]]);

关于ios - setDefaultTimeZone不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24494423/

10-09 00:56