如果您不传递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。
如您所见,两个时区完全相同,存储在相同的地址。

10-08 12:30