J'ai un intervalle de temps qui s'étend sur des années et je veux que tous les composants à partir d'année de secondes.
Ma première pensée est pour integer division de l'intervalle de temps en secondes dans une année, déduire de l'exécution d'un total de secondes, divisez-le par secondes dans un mois, déduire de la total en cours d'exécution et ainsi de suite.
Qui semble compliqué et j'ai lu que chaque fois que vous faites quelque chose qui semble compliquée, il y a probablement une méthode intégrée.
Est-il?
J'ai intégré Alex 2ème méthode dans mon code.
C'est dans une méthode appelée par un UIDatePicker dans mon interface.
NSDate *now = [NSDate date];
NSDate *then = self.datePicker.date;
NSTimeInterval howLong = [now timeIntervalSinceDate:then];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:howLong];
NSString *dateStr = [date description];
const char *dateStrPtr = [dateStr UTF8String];
int year, month, day, hour, minute, sec;
sscanf(dateStrPtr, "%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &minute, &sec);
year -= 1970;
NSLog(@"%d years\n%d months\n%d days\n%d hours\n%d minutes\n%d seconds", year, month, day, hour, minute, sec);
Lorsque j'ai mis le sélecteur de date à date 1 an et 1 jour dans le passé, j'obtiens:
1 ans 1 mois 1 jours 16 heures 0 minutes 20 secondes
qui est de 1 mois et 16 heures. Si j'ai mis le sélecteur de date pour 1 journée dans le passé, je suis en congé du même montant.
Mise à jour: j'ai une application qui calcule votre âge en années, compte tenu de votre anniversaire (à partir d'un UIDatePicker), mais il était souvent coupé. Cela prouve, il y a une inexactitude, mais je n'arrive pas à comprendre d'où il vient, pouvez-vous?