Convirtiendo una cadena en un NSDate

¿Cómo es posible convertir una cadena a NSDate en iOS?

 NSString *dateStr = @"20100223"; // Convert string to date object NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"yyyyMMdd"]; NSDate *date = [dateFormat dateFromString:dateStr]; // Convert date object to desired output format [dateFormat setDateFormat:@"EEEE MMMM d, YYYY"]; dateStr = [dateFormat stringFromDate:date]; [dateFormat release]; 

Espero que esto te ayudará.

Deberá echar un vistazo a NSDateFormatter . Determine el formato de la cadena de fecha y luego use dateFromString: para convertir la cadena en un objeto NSDate.

 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"dd/MM/YYYY"]; NSDate *date = [dateFormat dateFromString:dateStr]; list = [self getYear:date]; - (NSMutableArray *)getYear:(NSDate*)date { NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:date]; int year = [components year]; int month = [components month]; int day = [components day]; NSLog(@"%d",year); NSMutableDictionary *dateDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[NSString stringWithFormat:@"%d", day], @"day", [NSString stringWithFormat:@"%d", month], @"month", [NSString stringWithFormat:@"%d", year], @"year", nil]; return dateDict; } 

Un enfoque simple incluso si tiene sqlite DB:

 // NSTimeInterval is basically typedef of double so you can receive it as double also. NSTimeInterval *current = [[NSDate date] timeIntervalSince1970]; [DB addToDB:current]; //retrieve the date from DB NSDate *retrievedDateItem = [[NSDate alloc] initWithTimeIntervalSince1970:[getDBValueAsDouble]]; //convert it from double (NSTimeInterval) to NSDate // Set the style [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; [dateFormatter setTimeStyle:NSDateFormatterMediumStyle]; // Converted to string NSString *convertedDate = [dateFormatter stringFromDate:retrievedDateItem]; 

El resultado para este ejemplo:

3 de agosto de 2015, 12:27:50 p.m.

 +(NSDate*)str2date:(NSString*)dateStr{ if ([dateStr isKindOfClass:[NSDate class]]) { return (NSDate*)dateStr; } NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"yyyy-MM-dd"]; NSDate *date = [dateFormat dateFromString:dateStr]; return date; } 

Mi versión de trabajo en Swift

 func dateFor(timeStamp: String) -> NSDate { let formater = NSDateFormatter() formater.dateFormat = "HH:mm:ss:SSS - MMM dd, yyyy" return formater.dateFromString(timeStamp)! } func timeStampFor(date: NSDate) -> String { let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "HH:mm:ss:SSS - MMM dd, yyyy" return dateFormatter.stringFromDate(date) }