2010-03-16 25 views
7

Creo que la solución es realmente simple, simplemente no me he encontrado en línea.Dado año, mes y día, todo en int, ¿cómo generaría un NSDate

Supongamos que me dan int año, int mes, int día, int hora, int min, int sec .. ¿cómo puedo generar NSDate fuera de él?

Sé que podemos usar [NSDate initWithString:] pero creo que se complica si month/day/hour/min/sec son números de un dígito.

Respuesta

13

Supongamos que se me da año, int mes, int dia, int hora, int min, int sec .. ¿cómo puedo generar NSDate?

poner el enteros en un objeto NSDateComponents, entonces ask an NSCalendar object to change that into a date.

+0

+1 esta es la manera correcta de hacerlo –

+0

+1 Lo sabía hace mucho tiempo pero lo había olvidado. ¡Gracias! –

0

Este here prácticamente resume cómo hacerlo.

//create a string that looks like this, "October 22, 2009" or whatever the values are 
NSString* d = [NSString stringWithFormat:@"%@ %@, %@", month, day, year]; 
NSDate* date = [NSDate dateWithNaturalLanguageString:d]; 

ese enlace también muestra otras opciones para crear la fecha si no te gusta este método en particular.

di cuenta de que usted ha dicho que se les dio enteros ... que podría hacer que con este formato de cadena:

[NSString stringWithFormat:@"%i/%i/%i", month, day, year]; 
+2

Esto arrojará resultados incorrectos en muchos entornos locales (en los que el orden del día, el mes y el año no coincide con la forma en que creó la cadena). –

Cuestiones relacionadas