NSDate от NSString - PullRequest
       24

NSDate от NSString

2 голосов
/ 03 января 2011

У меня есть строка в формате @ "3 января 2011 4:55 утра".Может ли кто-нибудь сказать мне, пожалуйста, чтобы преобразовать вышеуказанную строку в NSDate, используя NSDateFormatter?

1 Ответ

1 голос
/ 03 января 2011

Вот как бы я это сделал:

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

[format setDateFormat:@"MMM d, yyyy h:mm a"];
NSString *strDate = @"Jan 3rd, 2011 4:55 am";
removeUnwantedCharactersFromDateString(&strDate);
NSDate *date = [format dateFromString:strDate];

[format release];

И функция removeUnwantedCharactersFromDateString (я король бессмысленно длинных имен :))

void removeUnwantedCharactersFromDateString(NSString **str)
{
    NSString *str1 = *str;
    NSRange seekrange = NSMakeRange(5, [str1 rangeOfString:@","].location - 5);

    NSRange range = [str1 rangeOfString:@"st" options:NSCaseInsensitiveSearch range:seekrange];
    if (range.location != NSNotFound)
        goto END;
    range = [str1 rangeOfString:@"nd" options:NSCaseInsensitiveSearch range:seekrange];
    if (range.location != NSNotFound)
        goto END;

    range = [str1 rangeOfString:@"rd" options:NSCaseInsensitiveSearch range:seekrange];
    if (range.location != NSNotFound)
        goto END;

    range = [str1 rangeOfString:@"th" options:NSCaseInsensitiveSearch range:seekrange];
    if (range.location == NSNotFound)
    {
        [NSException raise:@"Invalid operation" format:@"The string is in the incorrect format"];
        return;
    }

END:
    *str = [str1 stringByReplacingCharactersInRange:range withString:@""];
}

Здесь много помощи:

http://www.stepcase.com/blog/2008/12/02/format-string-for-the-iphone-nsdateformatter/

...