NSDate Conversion - PullRequest
       1

NSDate Conversion

0 голосов
/ 22 ноября 2011

Я пытаюсь преобразовать дату из MMM dd, YYYY в YYYY-MM-dd.

    NSDateFormatter *importDateFormat = [[NSDateFormatter alloc] init];
    [importDateFormat setDateFormat:@"MMM dd, YYYY"];

    NSDate *importedDate = [importDateFormat dateFromString:expiresOn.text];

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"YYYY-MM-dd"];

    NSString *dateImported = [dateFormat stringFromDate:importedDate];

Дата, извлеченная из expiresOn.text (label): 08 октября 2012

Дата, содержащаяся в dateImported после преобразования: 2011-12-25

Я что-то упустил? Что-то не так с моим форматером даты?

1 Ответ

3 голосов
/ 22 ноября 2011

Ну, есть две неправильные вещи, во-первых, это yyyy, а не YYYYY, и, поскольку вы анализируете месяц как слово, вам нужно указать форматеру даты, какой язык ожидать.

NSDateFormatter *importDateFormat = [[NSDateFormatter alloc] init];
[importDateFormat setDateFormat:@"MMM dd, yyyy"];
importDateFormat.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en"] autorelease];

NSDate *importedDate = [importDateFormat dateFromString:expiresOn.text];

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyy-MM-dd"];

NSString *dateImported = [dateFormat stringFromDate:importedDate];

Если вы используете ARC, то удалите авто-релизную часть в NSLocale;если вы не используете ARC, вам нужно выпустить NSDateFormatter.

...