Какое значение NSTimeZone использует NSDateFormatter, если вы его не передаете?

Какое значение NSTimeZone использует NSDateFormatter, если вы его не передаете? Я хотел бы использовать по умолчанию 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 ответа

Решение

Я также не смог найти никакой документации, но у меня была игра в отладчике, и похоже, что 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. Как видите, два часовых пояса абсолютно одинаковы и хранятся по одному адресу.

Это займет localTimeZone по умолчанию.

Другие вопросы по тегам