separar por para organizar organizador ordenar mover mac fotos fecha como carrete camara borrarlas borrar album ios cocoa-touch nsdate nsdateformatter nscalendar

ios - por - organizar fotos iphone 6



iPhone OS: ¿Cómo creo un NSDate para una fecha específica? (7)

Ejemplos de Swift

Los ejemplos son a menudo la forma más fácil de aprender. Aquí están algunos ejemplos.

Ahora

Este es el más fácil.

let currentDateTime = Date()

20 de febrero de 2017

// Specify date components var dateComponents = DateComponents() dateComponents.year = 2017 dateComponents.month = 2 dateComponents.day = 20 // Create date from components let userCalendar = Calendar.current // user calendar let dateThisPostWasUpdated = userCalendar.date(from: dateComponents)

1 de abril de 1976

// Specify date components var dateComponents = DateComponents() dateComponents.year = 1976 dateComponents.month = 4 dateComponents.day = 1 // Create date from components let userCalendar = Calendar.current // user calendar let appleFoundedDate = userCalendar.date(from: dateComponents)

¿Necesitas más detalles ...?

También hay otras formas de crear fechas. Si desea aprenderlos, y también cómo mostrar una fecha, vea mi respuesta más completa .

Parece una cosa simple, pero parece que no puedo encontrar la manera de hacerlo.

Sería genial ver un par de métodos diferentes.



Encontré este hilo mientras buscaba una respuesta a esta pregunta, pero luego encontré un buen ejemplo en mi libro de programación Big Nerd Ranch Objective-C. Gracias a ellos, no a mí.

NSDateComponents *myBDay =[[NSDateComponents alloc] init]; [myBDay setDay:22]; [myBDay setMonth: 04]; [myBDay setYear: 1984]; [myBDay setHour:9]; [myBDay setMinute:25]; [myBDay setSecond:35]; NSCalendar *g = [[ NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; NSDate *dateOfBirth = [g dateFromComponents:myBDay];


Es ridículo, ¿no?

A mediados de 2013 y Apple aún no ha proporcionado una forma simple de establecer un valor de NSDate.

Durante mi proyecto actual de iPad, no podía creer que tuviera que detener la productividad por un tiempo para escribir mi propia clase de ayuda para obtener el valor anual de NSDate. Quiero decir, vamos, esto es básico.

De todos modos, aquí está la clase de ayuda que utilicé en mi proyecto, para convertir una cadena en un valor de NSDate:

@implementation DateHelper +(NSDate*)parseDateString:(NSString *)dateString { NSDateFormatter *rfc3339TimestampFormatterWithTimeZone = [[NSDateFormatter alloc] init]; [rfc3339TimestampFormatterWithTimeZone setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; [rfc3339TimestampFormatterWithTimeZone setDateFormat:@"MMM dd, yyyy"]; NSDate *theDate = nil; NSError *error = nil; if (![rfc3339TimestampFormatterWithTimeZone getObjectValue:&theDate forString:dateString range:nil error:&error]) { NSLog(@"Date ''%@'' could not be parsed: %@", dateString, error); } return theDate; } @end

Usando este código, puede establecer un valor de NSDate usando algo como:

NSDate* date = [DateHelper parseDateString:@"Jul 16, 2013"];

Nota: esta función se basó en el código tomado de aquí: https://.com/a/3968411/391605

Mi solución había sido utilizar el siguiente código, pero descubrí que a veces , simplemente no analizaba, y devolvía nada .

// Take a date string in the format "Oct 23, 2013", and convert it into a NSDate value // THIS DOESN''T WORK ! DON''T TRUST THIS CODE !! NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"MMM dd, yyyy"]; [formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; NSDate* date = [formatter dateFromString:dateString];

Recuerdo que falló miserablemente en "12 de octubre de 2012" ... razón por la cual abandoné y usé la función "parseDateString" más complicada que se muestra arriba.

Mi punto es ... ten cuidado.

Algunas de las funciones básicas de NSDate simplemente no funcionan correctamente ...


La respuesta de @ Chuck es correcta y me lleva al siguiente código. Pensé en compartir:

NSDateComponents *comps = [[NSDateComponents alloc] init]; [comps setDay:10]; [comps setMonth:10]; [comps setYear:2010]; NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:comps];


Puedes usar esto

NSString *dateString = @"03-Sep-11"; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = @"dd-MMM-yy"; NSDate *date = [dateFormatter dateFromString:dateString];

Espero que esto te ayude.


Si está hablando de una fecha de calendario específica en lugar de una fecha UNIXy, probablemente desee la fecha de dateFromComponents: los dateFromComponents: