2009-11-25 9 views
9

Quiero dar, por ejemplo, 12/11/2005 en el formato de mm/dd/yyyy. ¿Puedo inicializar 12/11/2005 a NSDate directamente? ¿Alguna ayuda?¿Cómo puedo inicializar una fecha para NSdate?

se da un aviso y se bloquea cuando lo declaro como

NSDate *then = [NSDate dateWithNaturalLanguageString:02/11/2009 locale:nil]; 
+0

Este método es solo para Mac OS X v10.0 y posterior, no está disponible en iOS –

+0

'02/11/2009' no es un NSString. '@" 11/02/2009 "' es. –

Respuesta

17

Lo que hay que hacer es algo como esto:

NSDateFormatter *mmddccyy = [[NSDateFormatter alloc] init]; 
mmddccyy.timeStyle = NSDateFormatterNoStyle; 
mmddccyy.dateFormat = @"MM/dd/yyyy"; 
NSDate *d = [mmddccyy dateFromString:@"12/11/2005"]; 
NSLog(@"%@", d); 
1
+0

da advertencia ... bloqueos ..... cuando declaro como NSDate * then = [NSDate dateWithNaturalLanguageString: 11/02/2009 locale: nil]; –

+0

Necesita pasarlo por NSString. NSDate * then = [NSDate dateWithNaturalLanguageString: @ "02/11/2009" locale: nil]; – sosborn

0

Otra solución podría ser el uso de NSCalendar y NSDa teComponents, desde + dateWithNaturalLanguageString: está en desuso.

Por ejemplo, usted quiere un NSDate inicializado al 15 de agosto de 2001. Este es el código que funcione para usted:

NSCalendar *g = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; 

NSDateComponents *comps = [[NSDateComponents alloc] init]; 
comps.year = 2001; 
comps.month = 8; 
comps.day = 15; 

NSDate *myDate = [g dateFromComponents:comps]; 

u otra manera es:

let earliestDate = calendar.dateWithEra(1, year: 2012, month: 1, day: 1, hour: 0, minute: 0, second: 0, nanosecond: 0) 

para ajustar el earliestDate NSFecha al 01/01/2012

Cuestiones relacionadas