116 votes

Comment puis-je obtenir de l'heure et des minutes de NSDate?

Dans mon application j'ai besoin d'obtenir l'heure et la minute séparément:

NSString *currentHour=[string1 substringWithRange: NSMakeRange(0,2)];
        int currentHourInNumber=[currentHour intValue];

Envisager string1 contient 11:59:13 AM ce qui est à venir à partir de datepicker.

Ici, si j'utilise le code ci-dessus, il est normal d'obtenir de l'heure si il est plus grand que 9. D'autre j'ai besoin de changer de NSMakeRange(0,1) pour obtenir de l'heure entre 1 à 9.

Existe-il des méthodes pour obtenir l'heure, les minutes, etc?

Merci d'avance, merci de me fournir un exemple de code.

265voto

Thomas Müller Points 7712

Utiliser un NSDateFormatter pour convertir string1 en NSDate, puis prendre la NSDateComponents:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"<your date format goes here"];
NSDate *date = [dateFormatter dateFromString:string1];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:date];
NSInteger hour = [components hour];
NSInteger minute = [components minute];

53voto

Gil Margolin Points 709

Si vous avez seulement besoin de présenter comme une chaîne de caractères le code suivant est beaucoup plus facile

   NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm"];

 NSString *startTimeString = [formatter stringFromDate:startTimePicker.date];

45voto

codingTheHole Points 199

Cela me semble être ce que la question est après, pas besoin de formateurs:

NSDate *date = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:date];
NSInteger hour = [components hour];
NSInteger minute = [components minute];

6voto

Paul Lynch Points 13774

4voto

Si vous utilisez la bibliothèque C, alors que cela pourrait être fait:

time_t t;
struct tm * timeinfo;

time (&t);
timeinfo = localtime (&t);

NSLog(@"Hour: %d Minutes: %d", timeinfo->tm_hour, timeinfo->tm_min);

Et l'utilisation de Swift:

var t = time_t()
time(&t)
let x = localtime(&t)

println("Hour: \(x.memory.tm_hour) Minutes: \(x.memory.tm_min)")

Pour de plus amples renseignements, consultez: http://www.cplusplus.com/reference/ctime/localtime/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X