Синтаксический анализ даты / времени в iOS: как работать (или не работать) с часовыми поясами?

У меня есть веб-сайт ASP.NET MVC 3, который связывается с моим приложением iOS через JSON. Как часть объектов, отправленных в ответе JSON, у меня есть даты в формате гггг-ММ-дд ЧЧ: мм: сс ZZZ , который выводит 2011-04-05 16:28:22 -07: 00 . Как мне разобрать это в iOS?

Это код, с которым я сейчас возился:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSDate *date = [dateFormatter dateFromString:@"2011-04-05T16:28:22-0700"];

NSLog(@"%@; %@; %@", dateFormatter, date, [NSTimeZone localTimeZone]);

Первое, что следует отметить, это 2011-04-05 16:28:22 -07: 00 должен выглядеть как 2011-04-05T16: 28: 22-0700 , где T заменяет первый пробел (при условии, что это означает время или где часть времени строки начинается с?), второй пробел удаляется, а двоеточие в часовом поясе удаляется. Я полагаю, я найду способ отформатировать строку, которая. NET отправляет обратно, чтобы соответствовать строке, которую будет анализировать iOS.

Реальная проблема заключается в том, что выводимая дата на 7 часов опережает то, что я отправил в ответе JSON. Итак, iOS выводит 2011-04-05 16:28:22 -07: 00 как 2011-04-05 23:28:22 +0000 , и это неверно. что касается моего приложения.

Единственное решение, которое я нашел до сих пор, - это отправить дату в JSON как 2011-04-05 16:28:22 +00: 00 , но это снова неверно, потому что я меняю реальную дату.

В любом случае, я был бы признателен, если бы кто-нибудь взглянул и сообщил мне, как я могу проанализировать строку даты, которую .NET выводит в формате гггг -MM-dd HH: mm: ss ZZZ (который, как я полагаю, можно переписать в yyyy-MM-ddTHH: mm: ssZZZ ) в объект NSDate I можно использовать в iOS.

16
задан Gup3rSuR4c 30 December 2011 в 06:33
поделиться