2010-06-04 15 views
6

J'ai le format de 2:01:20 PM dans une étiquette; après quelques calculs, je dois changer l'heure et/ou la minute de cette étiquette.Comment régler la minute d'heure dans nsdate par programme?

En d'autres termes, est-il possible de modifier cette valeur d'étiquette en la convertissant en objet NSDate et en modifiant les heures et les minutes comme 15:20:30 PM?

Y a-t-il des méthodes de réglage pour cela?

+0

si j'utilise [chaine1 replaceCharactersInRange: NSMakeRange (0,5) withString: [ NSString stringWithFormat: @ "% d: 0% d", heure, finalMinute] J'ai besoin de vérifier beaucoup de conditions que si la minute est inférieure à 10 chaîne comme 01,02,03 .... et si l'heure est plus grande que 9 je dois changer de gamme, à cause de 12:03:23 PM ..... – mac

Répondre

1

Si vous devez calculer des instances réelles spécifiques dans le temps, par ex. 3:20:30 PM 23 octobre 2010, alors vous voulez utiliser NSCalendar qui vous permet de décomposer les dates et de faire des calculs liés à la date.

Avertissement. Les calculs de date et d'heure sont étonnamment complexes et détaillés. Attendez-vous à passer quelques heures à apprendre l'API.

+0

mon code est NSDateFormatter * timeFormatter = [[[NSDateFormatter alloc] init] autorelease]; \t [timeFormatter setDateStyle: NSDateFormatterNoStyle]; \t [timeFormatter setTimeStyle: NSDateFormatterMediumStyle]; \t NSDate * stringTime = [date NSDate]; \t NSString * formatedDateStringTime = [timeFormatter stringFromDate: stringTime]; \t \t // NSLog (@ "la chaîne de temps est% @", formatéeDateStringTime); \t \t time.text = formatéDateStringTime; ici, mon problème est que je dois changer l'heure, la minute, donc, si je suis au-dessus de commentaire c'est trop dur, d'autres classes pour le rendre facile TechZen. Merci Pour une réponse rapide. – mac

25

La réponse à votre première question "? comment régler l'heure minute NSDate programatically" suit:

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

Il choisit la date comme "0001-01-01". Comment régler la date actuelle? – Satyam

+1

Voici comment vous pouvez définir la date actuelle dans les composants: 'NSDateComponents * components = [composants du calendrier: NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate: [date NSDate]]; ' – iBug