2011-01-03 6 views
2

Ich habe eine Zeichenfolge des Formats @ "3. Januar 2011 04.55 Uhr". Kann mir jemand bitte sagen, dass ich die obige Zeichenfolge mit NSDateFormatter in NSDate konvertieren soll?NSDate von NSString

Antwort

1

Hier ist, wie ich es tun würde:

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]; 

Und die removeUnwantedCharactersFromDateString Funktion (Ich bin der König von pointlessly langen Namen :))

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:@""]; 
} 

viel Hilfe von hier:

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