2010-07-17 16 views
1

Je suis en train de mettre certains éléments de la date d'aujourd'hui avec NSDateComponent comme ceci:Comment créer une date personnalisée sur iPhone

NSDateComponents *comps = [[NSDateComponents alloc] init]; 
    [comps setDay:1]; 
    [comps setHour:1]; 
    [comps setMinute:44]; 
    NSCalendar *cal = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; 
    NSDate *date = [cal dateByAddingComponents:comps toDate:[NSDate date] options:0]; 
    [comps release]; 
    NSLog(@"%@", date); 

Mais cet exemple ajouterez le temps à la date actuelle. Maintenant, ce que je veux faire, c'est AJOUTER un jour mais régler l'heure et la minute aux valeurs spécifiées (pas d'ajout). Comment puis-je faire ceci?

Répondre

2

Cela a fonctionné à la fin:

NSDateComponents *comp = [[NSCalendar currentCalendar] components:NSYearCalendarUnit 
NSMonthCalendarUnit | NSDayCalendarUnit fromDate:[NSDate date]]; 
[comp setDay:[comp day] +1]; 
[comp setHour: 12]; 
[comp setMinute: 00]; 
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:comp]; 
+0

En fait, ce que je fais ici est d'ajouter un jour et de régler l'heure à 12:00 – sebrock

0

facile: Il suffit d'utiliser la propriété date ...

NSDateComponents *comps = [[NSDateComponents alloc] init]; 
[comps setDay:1]; 
[comps setHour:1]; 
[comps setMinute:44]; 
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDate *date = [gregorian dateFromComponents:comps]; 

Edit: oublié le calendrier. À partir du manuel (1ère page de NSDateComponents dans gras):

Important: Un objet NSDateComponents n'a aucune signification en soi; Vous devez savoir à quel calendrier il est interprété, et vous devez savoir si les valeurs sont des valeurs absolues des unités ou des quantités des unités.

Il y a aussi un exemple de comment l'utiliser.

+0

Cela rend nul. – sebrock

+0

oublié sur le calendrier ... édité pour le réparer. – Eiko

+0

Non testé mais cela fonctionnerait probablement aussi bien. – sebrock