setDefaultTimeZone不起作用

时间:2014-06-30 16:07:49

标签: ios sdk nsdate nstimezone

我只在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]]);

1 个答案:

答案 0 :(得分:1)

试试这个:

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]]);