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
делать.