2016-11-29 3 views
-1

Я пытаюсь преобразовать дату с определенным форматом и просто хочу получить дату с прошедшей даты, как показано ниже, но получение нулевого Что я делаю неправильно?NSDateFormatter не корректно формирует дату ios10

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"]; 
    NSDate *date = [dateFormatter dateFromString: [dicValues valueForKey:@"DateNeeded"]]; 
    [dateFormatter setDateFormat:@"dd/MM/yyyy h:mm a"]; 
    NSString *strSubTitle = [[NSString alloc] initWithFormat:@"%@", [dateFormatter stringFromDate:date]]; 

Дата Я получаю это: 2016-11-17T23: 46: 50,35, 2016-11-28T21: 25: 20,927 и 2016-11-29T00: 00: 00

+3

Вы можете распечатать эту [dicValues ​​valueForKey: @ "DateNeeded"] –

+3

'[dicValues ​​valueForKey: @ "DateNeeded"]' значение является? – Larme

+0

Без информации о том, как выглядят значения в 'dicValues', мы не можем помочь. голосование за закрытие. – vikingosegundo

ответ

1

Вы должны преобразовать

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

к этому

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"]; 

Как в вашей строки даты вы получаете миллисекунды также

Редактировать

Этот код работает меня, проверьте формат даты, который вы повторное получение от сервера

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"]; 
    NSDate *date = [dateFormatter dateFromString: @"2016-11-28T21:25:20.927"]; 
    if (date == nil) { 
     [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; 
     date = [dateFormatter dateFromString: @"2016-11-28T21:25:20.927"]; 
    } 
    [dateFormatter setDateFormat:@"dd/MM/yyyy h:mm a"]; 
    NSString *strSubTitle = [[NSString alloc] initWithFormat:@"%@", [dateFormatter stringFromDate:date]]; 
+0

Дата получения: 2016-11-28T21: 25: 20.927 – user2813740

+0

Обновлено ответ Проверить сейчас – Rajat

+0

nop ... все еще дает мне NSDate * date как ноль ... :-( – user2813740

0

[dicValues valueForKey: @"DateNeeded"] либо ноль или не соответствует указанному формату "yyyy-MM-dd HH:mm:ss".

+0

Дата получения: 2016-11-28T21: 25: 20.927 – user2813740

0

Сначала проверьте, что вы принимаете, находится в формате yyyy-MM-dd HH:mm:ss. Если нет, сделайте этот формат в соответствии с датой, которую вы получили.

Для примера, вы получили дату 29/11/16, то ваш код будет как этот

[dateFormatter setDateFormat:@"dd/MM/yy"]; 
NSDate *date = [dateFormatter dateFromString: [dicValues valueForKey:@"DateNeeded"]]; 

После того, как вы получите дату, а затем преобразовать его в любом формате вы хотите.

0

попробовать

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS"]; 
+0

Это ответ. Если op исправляет это, его код будет работать. – vikingosegundo

+0

Ну, он не сделал, когда написал это ответ. – vikingosegundo

+0

И теперь он включает маркер 'T' – vikingosegundo

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