iPhone NSDateFormatter Конвертировать строку - PullRequest
1 голос
/ 07 сентября 2011

У меня есть следующая строка: NSString *dateStr = @"2010-01-15";, которую я пытаюсь преобразовать в January, 15th, 2010.

В настоящее время я использую следующий код, но он возвращает (null).

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMMM d, YYYY"];
NSDate *date = [dateFormat dateFromString:dateStr];
[dateFormat release];
incidentDate.text = [NSString stringWithFormat:@"%@", date];

Любой совет? Заранее спасибо !!

Ответы [ 5 ]

4 голосов
/ 07 сентября 2011

Измените ваш код, как указано ниже, даст вам желаемый результат.

    NSString *dateStr = @"2010-01-15";
    NSDateFormatter *dtF = [[NSDateFormatter alloc] init];
    [dtF setDateFormat:@"YYYY-mm-dd"];
    NSDate *d = [dtF dateFromString:dateStr];
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"MMMM d, YYYY"];
    NSString *st = [dateFormat stringFromDate:d];   
    [dtF release];
    [dateFormat release];
    incidentDate.text = [NSString stringWithFormat:@"%@", st];
2 голосов
/ 07 сентября 2011
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"YYYY-dd-MM"];
NSDate *date = [dateFormat dateFromString:dateStr];
[dateFormat setDateFormat:@"MMMM d, YYYY"];
incidentDate.text = [NSString stringWithFormat:@"%@", [dateFormat stringFromDate:date]];
[dateFormat release];
2 голосов
/ 07 сентября 2011

Попробуйте это

NSString* ds=@"2010-01-15";
NSDateFormatter* df=[[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"];
NSDate* dt=[df dateFromString:ds];
[df setDateStyle:kCFDateFormatterLongStyle];
NSString* p=[df stringFromDate:dt];

Я проверил в своем приложении, и он отлично работает.

2 голосов
/ 07 сентября 2011

Проверьте, что это работает для меня ....

NSString *date = @"2011-01-25";
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"YYYY-MM-dd"];
NSDate *date1 = [format dateFromString:date];
[format setDateFormat:@"MMMM d, YYYY"];
date = [format stringFromDate:date1];
2 голосов
/ 07 сентября 2011

Измените

[dateFormat setDateFormat:@"MMMM d, YYYY"];

на

[dateFormat setDateFormat:@"yyyy-MM-dd"];

, чтобы получить объект даты из строки.

Теперь, чтобы преобразовать, я не думаю, что вы можете достичь 'th'Суффикс с использованием DateFormatters, эта SO ссылка поможет вам ..

См. dateFormatter Документация

...