Конвертировать строку даты в NSDate в объекте c/iOS

У меня есть эта строка ---- > Sun, 16 Dec 2012 15:30:22 +0000

Я хочу преобразовать его в NSDate. Я пробовал код ниже, но он дает мне null

NSDateFormatter *df = [[NSDateFormatter alloc] init];

[df setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];

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

date = [df dateFromString: @"Sun, 16 Dec 2012 15:30:22 +0000"];

NSLog(@"date: %@", date);

У меня проблема не возникает?

Любое руководство plz

Ответ 1

dateFormat форматирования должен соответствовать формату строки, которую вы предоставляете.

Поэтому что-то подобное должно работать

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"EEE, dd MMM yyyy HH:mm:ss ZZZ";

NSLog(@"%@", [formatter dateFromString:@"Fri, 18 Jan 2013 15:30:22 +0000"]);

Чтобы найти то, что спецификаторы на самом деле означают проверку Unicode Technical Standard # 35

Ответ 2

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

NSDateFormatter *df = [[NSDateFormatter alloc] init];

    [df setDateFormat:@"EEEE, dd MMM yyyy"];

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

    date = [df dateFromString: @"Sun, 16 Dec 2012"];

    NSLog(@"date: %@", date);

Надеюсь, это поможет вам.

ИЗМЕНИТЬ: -

Для вашей строки

NSDateFormatter *df = [[NSDateFormatter alloc] init];

    [df setDateFormat:@"EEEE, dd MMM yyyy HH:mm:ss z"];

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

    date = [df dateFromString: @"Sun, 16 Dec 2012 15:30:22 +0000"];

    NSLog(@"date: %@", date);

Ответ 3

Попробуйте это, чтобы получить NSDate из String

- (NSDate*) dateFromString:(NSString*)aStr
{

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
    //[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss a"];
    [dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

    NSLog(@"%@", aStr);
    NSDate   *aDate = [dateFormatter dateFromString:aStr];
    [dateFormatter release];
    return aDate;
}

Это отлично работает для меня.