2010-06-04 8 views
6

Tengo formato 2:01:20 PM en una etiqueta; después de algunos cálculos, necesito cambiar la hora y/o el minuto de esa etiqueta.¿Cómo configurar horas por hora en nsdate programáticamente?

Es decir, ¿Es posible cambiar el valor de la etiqueta, convirtiéndolo como objeto NSDate y modificando hora y minuto como 3:20:30 PM?

¿Hay algún método de configuración para esto?

+0

si uso [cadena1 replaceCharactersInRange: NSMakeRange (0,5) withString: [ NSString stringWithFormat: @ "% d: 0% d", hour, finalMinute] Necesito comprobar la gran cantidad de condiciones que si el minuto es menos de 10 anexar una cadena como 01,02,03 .... y si la hora es mayor de 9 tengo que cambiar el rango, debido a 12:03:23 PM ..... – mac

Respuesta

1

Si necesita calcular instancias reales específicas a tiempo p. Ej. 3:20:30 PM 23 de octubre de 2010, luego desea usar NSCalendar que le permite descomponer las fechas y hacer cálculos relacionados con la fecha.

Palabra de advertencia. Los cálculos de fecha y hora son sorprendentemente complejos y detallados. Espere pasar un par de horas aprendiendo la API.

+0

mi código es NSDateFormatter * timeFormatter = [[[NSDateFormatter alloc] init] liberación automática]; \t [timeFormatter setDateStyle: NSDateFormatterNoStyle]; \t [timeFormatter setTimeStyle: NSDateFormatterMediumStyle]; \t NSDate * stringTime = [NSDate date]; \t NSString * formattedDateStringTime = [timeFormatter stringFromDate: stringTime]; \t \t // NSLog (@ "la cadena de tiempo es% @", formattedDateStringTime); \t \t time.text = formatoDateStringTime; aquí, mi problema es que necesito cambiar la hora hora, minuto, entonces, si sigo el comentario anterior es demasiado difícil, cualquier otra clase para hacerlo más fácil TechZen. Gracias por una respuesta rápida. – mac

25

La respuesta a la primera pregunta "? cómo configurar hora minuto en NSDate programáticamente" sigue:

NSDate* result; 
    NSDateComponents *comps = [[NSDateComponents alloc] init]; 
    [comps setMinute:0]; 
    [comps setHour:0]; 
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    result = [gregorian dateFromComponents:comps]; 
    [comps release]; 
+0

Selecciona la fecha como "0001-01-01". Cómo establecer la fecha actual? – Satyam

+1

Así es como puede establecer la fecha actual en los componentes: 'NSDateComponents * components = [calendar components: NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate: [NSDate date]]; ' – iBug

Cuestiones relacionadas