Дата и часовой пояс - PullRequest
       1

Дата и часовой пояс

0 голосов
/ 03 февраля 2011

В нашем приложении нам всегда нужно выбирать текущее восточное время (EST или EDT).

Мы устанавливаем часовой пояс приложения, как показано ниже в делегате приложения:

NSTimeZone *ESTTimeZone = [NSTimeZone timeZoneWithName:@"US/Eastern"];
[NSTimeZone setDefaultTimeZone:ESTTimeZone];

Кроме того, для NSDateFormatter мы устанавливаем локаль следующим образом:

NSDateFormatter *formatForFileName  = [[NSDateFormatter alloc] init];
[formatForFileName setDateFormat:@"yyyyMMdd"];
NSLocale *uslocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatForFileName setLocale:uslocale];
[uslocale release];

Если на моем iPad установлены правильные дата и время EST, проблем нет. Если бы я записал текущую дату следующим образом:

NSLog(@"current date : %@",[formatForFileName stringFromDate:[NSDate date]]);

будет правильно отображать сегодняшнюю дату. Однако, если я изменю дату своего iPad на дату следующего дня и зарегистрирую текущую дату, я бы хотел, чтобы текущие дата и время EST были возвращены. Однако [NSDate date] возвращает мне текущую дату iPad (дату следующего дня) и время, а не дату и время EST.

Можно ли как-нибудь получить правильную дату и время EST, используя [NSDate date] независимо от того, что пользователь установил на своем iPad.

Спасибо.

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

Я не уверен, что понимаю ваш вопрос.[NSDate date] всегда создает дату с датой / временем, которое ОС считает действительным в данный момент, т.е. временем, на которое установлены часы устройства.Если у вас есть сомнения относительно того, действительно ли это текущее время, вам необходимо связаться с надежным сервером времени в Интернете и узнать время оттуда.

0 голосов
/ 03 февраля 2011

[NSDate date] возвращает дату, установленную на текущую системную дату и время. Поэтому, когда пользователь переходит на дату следующего дня в системе, [NSDate date] возвращает дату следующего дня. NSDate предполагает (справедливо), что системная дата является правильной датой.

Чтобы отобразить фактическую дату EST, вам нужно запросить источник (удаленный источник), отличный от системы, о требуемой дате.

...