2010-02-17 4 views
1

Je souhaite calculer le nombre d'heures passées un jour à partir d'un objet NSDate (en UT). Fondamentalement, l'exemple devrait ressembler à "17 heures et 31 minutes".NSDate hours in Cocoa

Merci!

Répondre

1

Jetez un oeil à Erica Sadun's NSDate utilities. Vous pouvez soit les utiliser dans votre projet ou simplement vous inspirer sur la façon de résoudre votre problème.

Mais pour répondre à votre question particulière, c'est assez facile, car les NSDates ne comptent en fait que quelques secondes depuis une heure de référence. Cela fonctionne:

NSTimeInterval interval = [[NSDate dateWithTimeIntervalSinceNow:0] timeIntervalSinceDate:[NSDate dateWithTimeIntervalSinceReferenceDate:0]]; 
interval = interval/3600.0f; 
float hours; 
float fraction; 
fraction = modff(interval, &hours); 
int minutes = (int)(fraction * 100.0f); 
NSLog(@"%d hours and %d minutes", (int)hours, (int)minutes); 

Peut-être que vous pouvez vous débarrasser de certains des moulages.

+0

'intervalle NSTimeInterval = [[NSDate dateWithTimeIntervalSinceNow: 0] timeIntervalSinceDate: [NSDate dateWithTimeIntervalSinceReferenceDate: 0]];' doit être écrit 'intervalle NSTimeInterval = [NSDate timeIntervalSinceReferenceDate];' – user102008

+0

Il y a 60 minutes en une heure non 100: ' int minutes = (int) (fraction * 60.0f); ' –