2014-10-24 5 views
1

Я искал через Интернет в течение длительного времени, чтобы получить это, но я не могу найти решение. Я получил строку даты из веб-служб как "22 May 2014", мне нужно преобразовать в формат NSDate, чтобы проверить его с текущей датой. И я должен узнать дату с веб-службы в будущем или в прошлый раз.Преобразование даты из строки в NSDate в ios

Реальная проблема заключается в том, что, когда я преобразовать это с помощью

NSDate *date; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"dd MMMM YYYY"]; 
date = [dateFormatter dateFromString:dateString]; 

Но я получаю совершенно разные даты, образец входного DateString: 22 June 2014 и выхода я получаю 2013-12-21 18:30:00+0000

Пожалуйста, предложить какое-либо решение.

Заранее спасибо. :)

+0

Вы правы @ Jon Skeet .. @ Sudheesh Plz ссылаются на это сообщение http: // stackoverflow. com/questions/3917250/conversion-nsstring-to-nsdate-and-back-again –

ответ

3

Вы используете YYYY, что не значит, что вы думаете, что это значит. Из документации TR35-31Y является символом «год в календаре недели».

Вы хотите, чтобы dd MMMM yyyy вместо вашего формата. Смешивание недельных полей и регулярных полей день/месяц/год - это рецепт нечетных проблем.

Кроме того, вы можете захотеть установить часовой пояс в вашем форматировщике - если вы только разбор даты, то вам следует использовать UTC, и убедитесь, что все своих вычислений и форматированием/разбор использование UTC ,

(Я подозреваю, что проблема заключается в том, что неделя не установлена, поэтому предполагается, что она равна 1 ... и 2014 год начинается 30 декабря. Затем день месяца устанавливается на 22 с помощью dd-части, а затем учитывается ваше смещение часового пояса UTC + 05: 30.)

+0

Спасибо @Jon Skeet за неожиданный ответ, я проверил его и нашел работу. – Sudheesh

+1

Черт, Джон, ты повсюду, даже на тему с меткой iOS. Есть ли какой-то тэг, который я не могу найти? :) – Bigood

Смежные вопросы