Проблема преобразования NSString в NSDate - PullRequest
4 голосов
/ 17 сентября 2010

У меня есть объект NSString, который я преобразовываю в NSDate с помощью NSDateFormatter. Теперь код отлично работает здесь со всеми операционными системами, но он создает различные выходные данные при добавлении клиента (регион США). Вот код, который я использую.

NSDateFormatter *formate = [[[NSDateFormatter alloc] init] autorelease];
[formate setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *strConcat = @"2010-09-24 17:30:00";
NSDate *date = [formate dateFromString:strConcat];
NSLog(@"Output :%@",date);

Вывод на моем конце ------- 2010-09-24 17:30:00 - 0700 Вывод на конец клиента ---- 2010-09-25 00:30:00 GMT Может кто-нибудь подсказать, в чем проблема?

Спасибо Пратик Госвами

Ответы [ 4 ]

4 голосов
/ 17 сентября 2010

Единственная разница в выходных данных, которую я замечаю, - это другое время. Если вы явно не установите свойство timeZone форматера, оно будет использовать системный часовой пояс системы. Если вы ожидаете, что время будет точно таким же от вас и вашего клиента:

[formate setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

Это обеспечило бы вывод всегда по Гринвичу.

0 голосов
/ 14 октября 2010

В iOS2.x и 3.x функция description / datefromstring возвращает: 2010-09-24 17:30:00 - 0700

в iOS 4.x он возвращает это: 2010-09-25 00:30:00 GMT

Вы можете отправить сообщение об ошибке в яблоко.

0 голосов
/ 17 сентября 2010

На самом деле, это работает правильно.Две даты эквивалентны, только одна находится в часовом поясе США / горы, а другая в часовом поясе Гринвича.(5:30 вечера + 7 часов = 12:30 утра)

В чем здесь проблема?

0 голосов
/ 17 сентября 2010

Вам необходимо вручную установить языковой стандарт для NSDateFormatter, чтобы все ваши пользователи видели одинаковую отформатированную строку.В противном случае средство форматирования будет использовать любой языковой стандарт, установленный для устройства.

...