У меня есть веб-сайт ASP.NET MVC 3, который взаимодействует с моим приложением iOS через JSON. Как часть объектов, отправленных в ответ JSON, у меня есть даты в формате yyyy-MM-dd HH:mm:ss 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, выводимую через формат yyyy-MM-dd HH:mm:ss ZZZ
(который, я полагаю, можно переписать на yyyy-MM-ddTHH:mm:ssZZZ
) на NSDate
объект, который я могу использовать в iOS.