iOS - автоматически ли setDefaultTimeZone обрабатывает переход на летнее время и смещение часового пояса?

Сервер в настоящий момент хранит дату в UTC и в приложении пользователь может выбрать любой часовой пояс.

[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithName:selectedTimeZone]]

Это заменит местный часовой пояс. Нужно ли мне что-то делать в NSDateFormatter?

setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"

Я думаю, мне не нужно звонить setTimeZone в NSDateFormatter если я переопределить defaulttimezone.

А также [NSDate date] вернет правильную текущую дату или будет абсолютное время?

1 ответ

Решение

Здесь есть несколько связанных вопросов.

Это заменит местный часовой пояс. Нужно ли мне что-то делать в NSDateFormatter?

Вам не нужно устанавливать часовой пояс, потому что если вы этого не сделаете, он использует значение по умолчанию при создании форматера даты.

Я думаю, что мне не нужно вызывать setTimeZone в NSDateFormatter, если я переопределяю defaulttimezone.

Правда, но если вы когда-нибудь измените часовой пояс по умолчанию, вам нужно создать новый NSDateFormatter, потому что он не замечает, что значение по умолчанию изменилось. Или вы можете просто изменить часовой пояс форматера даты в любое время, когда вы измените значение по умолчанию.

А также [NSDate date] вернет правильную текущую дату или будет абсолютное время?

Результат [NSDate date] не зависят от часового пояса по умолчанию. NSDate не имеет часового пояса, поэтому вы получите те же результаты, даже если вы измените значение по умолчанию.

Поддерживает ли setDefaultTimeZone летнее время и смещение часового пояса автоматически?

Если часовой пояс использует летнее время, тогда да. В противном случае нет. Это кажется очевидным, но имейте в виду, что такие зоны, как GMT-0500 нет летнего времени, хотя такие зоны, как America/New_York делать.

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