2013-11-21 4 views
2

Значение строки не преобразуется в формат даты. см. мой код ниже ...Значение строки не преобразуется в формат даты

{ 
NSString * TempDate = [NSString stringWithFormat:@"%@ %@ %@",Datelbl.text,yearString,TimeLbl.text]; // result is Thursday, November 21 2013 3:05 PM 

     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
     [dateFormatter setDateFormat : [NSDateFormatter dateFormatFromTemplate:@"EEEE, MMMM d yyyy hh:mm a" options:0 locale:[NSLocale currentLocale]]]; 

     AppointmentDate = [dateFormatter dateFromString:TempDate];// in .h file NSDate *AppointmentDate; 

    } 

Моя проблема заключается в посещении даты, показывающей значение nil? Зачем ? В чем моя ошибка !!!

+0

Одна вещь, которую я замечаю, это 'hh', когда у вас только 3:05 вместо 03:05 – borrrden

+0

Можете ли вы вставить эти значения? –

+0

уже отправлено значение tempDate в 1-й строке. и, назначениеDate значение ноль. !! – Ramdhas

ответ

2

Попробуйте этот формат:

[dateFormatter setDateFormat :@"EEEE',' MMMM d yyyy hh:mm a"]; 

Вам нужно бежать символ, который не является частью формата (запятая).

Я попробовал, и это теперь работает:

NSString *date = @"Thursday, November 21 2013 3:05 PM"; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat :@"EEEE',' MMMM d yyyy hh:mm a"]; 

NSDate *AppointmentDate = [dateFormatter dateFromString:date]; 

Если язык не английский, добавьте это:

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
[dateFormatter setLocale:usLocale]; 
+1

кажется, что вы добавили один дополнительный ']' –

+0

Хорошее место! Даже на странице Unicode есть пример того, что вы не избегаете запятой. Это сбивает с толку. – borrrden

+0

Да, исправил! Я скопировал строку из своего кода –

0

Только это одно дело для вас:

[dateFormatter setDateFormat : @"EEEE, MMMM d yyyy hh:mm a"]; 
+0

destinationDate возвращает это значение ... 2013-11- 21 10:20:00 +0000 – Ramdhas

+0

@Ramdy: Это происходит из-за часового пояса и локали. Вы можете установить его, если хотите получить то же время, что и в строке. –

+0

@Ramdy: nslog даты назначения печатает время в GMT .... –

0

образование от NSDateFormatter должно быть

"EEEE, MMMM dd yyyy hh:mm a" it must match to your date string. 
Смежные вопросы