如果你没有传递它,NSDateFormatter会使用什么NSTimeZone值?

时间:2012-09-27 03:01:23

标签: objective-c ios nsdateformatter nstimezone

如果你没有传入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]。我只是不确定默认值是什么,并且不会在任何地方看到它。

2 个答案:

答案 0 :(得分:1)

我找不到任何文档,但我在调试器中有一个游戏,看起来NSDateFormatter使用defaultTimeZone。

  

(lldb)p(NSTimeZone *)[f timeZone](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。 如您所见,两个时区完全相同,存储在同一地址。

答案 1 :(得分:0)

默认情况下需要localTimeZone