2016-03-18 4 views
-2

Iam дата получения в формате NSString «2016-03-16T00: 00: 00.000 + 05: 30» Iam, используя следующий способ преобразования даты NSString в правильный формат NSDate и возвращающий значение null.Дата в формате NSString, возвращающая значение null iOS?

NSString *dateString = @"2016-03-16T00:00:00.000+05:30"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm:ssZZZ"]; 
NSDate *dateFromString = [[NSDate alloc] init]; 

dateFromString = [dateFormatter dateFromString:dateString]; 

//dateFromString returns null. 

Pls помочь

я обновил с этим кодом

NSString *strDateFor = [polygon valueForKey:@"effective_from"]; 
    NSDateFormatter *dateformate=[[NSDateFormatter alloc]init]; 
    [dateformate setDateFormat:@"yyyy-MM-dd 'T' HH:mm:ss ZZZZ"]; 
    NSDate *date = [dateformate dateFromString:strDateFor]; 
    NSLog(@"date : %@",date); //null 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init]; 
    [dateFormat setDateFormat:@"dd-MM-yyyy"]; 
    NSString *strDate = [dateFormat stringFromDate:date]; 
    NSLog(@"The strDate is - %@", strDate); //null 

снова нуль

+0

, как я должен это исправить ??? – Bangalore

+1

Сравните строку и формат. Они не совпадают. – gnasher729

ответ

2

Во-первых, линия:

NSDate *dateFromString = [[NSDate alloc] init]; 

не делать какие-либо потому что вы не используя экземпляр NSDate, который вы создаете здесь. Просто оставьте это.

Во-вторых, всегда установить дату форматирования locale, если вы разобрали строку даты так. По умолчанию NSDateFormatter использует текущий язык пользователя, который может быть чем угодно, поэтому вы не можете полагаться на него. Вероятно, вам нужен локаль en_US_POSIX, так как она не будет изменяться в будущем.

В-третьих, ваша строка формата даты неверна, потому что вы не указали дробные секунды (.SSS).

Это работает:

NSString *dateString = @"2016-03-16T00:00:00.000+05:30"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSSZZZ"]; 
NSDate *dateFromString = [dateFormatter dateFromString:dateString]; 
+0

да, его работа. если я хочу только часть даты, что я должен делать? – Bangalore

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