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