0

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

4

2 回答 2

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"是一个 NSDateFormatter,它是用 alloc - init 创建的。如您所见,两个时区完全相同,存储在同一个地址。

于 2012-09-27T03:55:09.963 回答
0

默认情况下需要一个localTimeZone

于 2012-09-27T04:20:24.523 回答