objective-c swift nsstring nsdate

objective c - Convertir NSDate a NSString



objective-c swift (12)

Defina su propia utilidad para formatear su fecha formato de fecha requerida para, por ejemplo.

NSString * stringFromDate(NSDate *date) { NSDateFormatter *formatter [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"MM ∕ dd ∕ yyyy, hh꞉mm a"]; return [formatter stringFromDate:date]; }

¿Cómo convierto, NSDate a NSString para que solo el año en formato "aaaa" se envíe a la cadena?


En Swift:

var formatter = NSDateFormatter() formatter.dateFormat = "yyyy" var dateString = formatter.stringFromDate(YourNSDateInstanceHERE)


Espero agregar más valor proporcionando el formateador normal que incluye el año, el mes y el día con la hora. Puedes usar este formateador por más de un año

[dateFormat setDateFormat: @"yyyy-MM-dd HH:mm:ss zzz"];

Espero que esto ayude a más personas.

Saludos Al


Hay varios ayudantes de NSDate en la web que tiendo a usar:

https://github.com/billymeltdown/nsdate-helper/

Lea el extracto a continuación:

NSString *displayString = [NSDate stringForDisplayFromDate:date];

Esto produce los siguientes tipos de salida:

‘3:42 AM’ – if the date is after midnight today ‘Tuesday’ – if the date is within the last seven days ‘Mar 1’ – if the date is within the current calendar year ‘Mar 1, 2008’ – else ;-)


No sé cómo todos nos perdimos esto: localizedStringFromDate:dateStyle:timeStyle:

NSString *dateString = [NSDateFormatter localizedStringFromDate:[NSDate date] dateStyle:NSDateFormatterShortStyle timeStyle:NSDateFormatterFullStyle]; NSLog(@"%@",dateString);

Salidas ''13 / 06/12 00:22:39 GMT + 03: 00 ''


Qué tal si...

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy"]; //Optionally for time zone conversions [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]]; NSString *stringFromDate = [formatter stringFromDate:myNSDateInstance]; //unless ARC is active [formatter release];


Si estás en Mac OS X puedes escribir:

NSString* s = [[NSDate date] descriptionWithCalendarFormat:@"%Y_%m_%d_%H_%M_%S" timeZone:nil locale:nil];

Sin embargo, esto no está disponible en iOS.


Si no tiene NSDate -descriptionWithCalendarFormat:timeZone:locale: disponible (no creo que iPhone / Cocoa Touch incluya esto) puede que necesite usar strftime y jugar con algunas cadenas estilo C. Puede obtener la marca de tiempo de UNIX desde un NSDate usando NSDate -timeIntervalSince1970 .


Solo agrega esta extensión:

extension NSDate { var stringValue: String { let formatter = NSDateFormatter() formatter.dateFormat = "yourDateFormat" return formatter.stringFromDate(self) } }


NSDateFormatter *dateformate=[[NSDateFormatter alloc]init]; [dateformate setDateFormat:@"yyyy"]; // Date formater NSString *date = [dateformate stringFromDate:[NSDate date]]; // Convert date to string NSLog(@"date :%@",date);


+(NSString*)date2str:(NSDate*)myNSDateInstance onlyDate:(BOOL)onlyDate{ NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; if (onlyDate) { [formatter setDateFormat:@"yyyy-MM-dd"]; }else{ [formatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"]; } //Optionally for time zone conversions // [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]]; NSString *stringFromDate = [formatter stringFromDate:myNSDateInstance]; return stringFromDate; } +(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; }


NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *components = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:myNSDateInstance]; NSInteger year = [components year]; // NSInteger month = [components month]; NSString *yearStr = [NSString stringWithFormat:@"%ld", year];