如果您不传递NSDateFormatter的值,它将使用什么NSTimeZone值?我想使用默认的timeZone
值,或传入给定的值。我想做这样的事情:
- (NSString *) announcementTime{
NSTimeZone *defaultTimeZone; // What does this become?
[self announcementTimeInTimeZone:defaultTimeZone];
}
- (NSString *) announcementTimeInTimeZone:(NSTimeZone *)timeZone{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterNoStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setTimeZone:timeZone];
return time;
}
我想将什么时区传递给我的
announcementTimeInTimeZone:
方法?也许[NSTimeZone defaultTimeZone]
或[NSTimeZone localTimeZone]
。我只是不确定默认值是什么,因此看不到任何地方的文档。 最佳答案
我也找不到任何文档,但是我在调试器中发挥了作用,看起来NSDateFormatter使用defaultTimeZone。
(lldb)p(NSTimeZone *)[f timeZone](NSTimeZone *)$ 1 = 0x0a926fa0
@“澳大利亚/悉尼”
(lldb)p(NSTimeZone *)[NSTimeZone defaultTimeZone]
(NSTimeZone *)$ 2 = 0x0a926fa0 @“ Australia / Sydney”
(lldb)po [NSTimeZone localTimeZone]
(id)$ 2 = 0x0ab3bb10当地时区(澳大利亚/悉尼(GMT + 10:00)偏移36000)
“ f”是一个仅使用alloc-init创建的NSDateFormatter。
如您所见,两个时区完全相同,存储在相同的地址。