Objective c 如果不使用';你不能把它传进来吗?

Objective c 如果不使用';你不能把它传进来吗?,objective-c,ios,nsdateformatter,nstimezone,Objective C,Ios,Nsdateformatter,Nstimezone,如果不传入NSDateFormatter,它将使用什么NSTimeZone值?我想使用默认的时区值,或者传入一个给定的值。我想这样做: - (NSString *) announcementTime{ NSTimeZone *defaultTimeZone; // What does this become? [self announcementTimeInTimeZone:defaultTimeZone]; } - (NSString *) announcementTime

如果不传入NSDateFormatter,它将使用什么NSTimeZone值?我想使用默认的
时区
值,或者传入一个给定的值。我想这样做:

- (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时区](NSTimeZone*)$1=0x0a926fa0 @“澳大利亚/悉尼”

(lldb)p(NSTimeZone*)[NSTimeZone defaultTimeZone] (NSTimeZone*)$2=0x0a926fa0@“澳大利亚/悉尼”

(lldb)po[NSTimeZone localTimeZone] (id)$2=0x0ab3bb10本地时区(澳大利亚/悉尼(GMT+10:00)偏移36000)

“f”是仅使用alloc-init创建的NSDateFormatter。
正如您所看到的,这两个时区完全相同,存储在同一个地址。

默认情况下需要一个
localTimeZone

是的,我将其添加到上面的答案中。它们是不同的。这个答案对时区类型有很好的解释。但是,在所有情况下,您应该考虑格式化程序默认使用用户的区域设置(<代码> CurrestLoaLea/Cuff>)与用户的偏好设置叠加。