Создать NSDate объекты на основе часового пояса - PullRequest
2 голосов
/ 18 июля 2011

Я получаю следующий формат даты из моего приложения.

07/18/2011/04/45/EDT

Я подстроку это к "18.07.2011/04/45" и "EDT".

Используя следующий код, я составляю дату.

   NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
   [dateFormatter setDateFormat:@"MM/dd/yyyy/HH/mm"];
   [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EDT"]];

   NSDate *currentServerDate = [dateFormatter dateFromString:formattedDateString];
   NSLog(@"currentServerDate %@",currentServerDate);

Однако, когда я печатаю NSDate (созданный с использованием вышеуказанного formattter), он печатается как «2011-07-18 14:15:00 +0530», где +0530 - мой часовой пояс. Мне нужно составить относительно часового пояса EDT. Как мне это сделать?

Спасибо

Ответы [ 2 ]

3 голосов
/ 18 июля 2011

Я думаю, что часовой пояс, вероятно, не тот, который вы думаете.Попробуйте зарегистрировать часовой пояс, возвращаемый timeZoneWithAbbreviation: , и посмотрите, что он говорит вам.Кроме того, просмотрите документацию, на которую я ссылался, где написано:

Как правило, вам не рекомендуется использовать сокращения, за исключением уникальных случаев, таких как «UTC» или «GMT».Сокращения часовых поясов не стандартизированы, поэтому данное сокращение может иметь несколько значений - например, «EST» относится к восточному времени как в Соединенных Штатах, так и в Австралии

0 голосов
/ 18 июля 2011

По умолчанию NSDate метод description показывает дату в GTM со смещением локали вашей системы.Если вы хотите набрать NSDate, используя NSLog, используйте одно из следующих действий:

NSLog(@"date = %@", [date descriptionWithLocale:some_other_locale])
NSDateFormatter *formatter = ...
NSLog(@"date = %@", [formatter stringFromDate:date]);
...