私は何年にもわたる時間間隔を持っており、年から秒までのすべての時間コンポーネントが必要です。
私の最初の考えは、時間間隔を1年の秒で整数で除算し、それを現在の秒の合計から減算し、それを1か月の秒で除算し、それを現在の合計から減算するということです。
それは複雑に思えます。複雑に見えることをしているときはいつでも、おそらく組み込みのメソッドがあることを読みました。
ある?
Alexの2番目のメソッドをコードに統合しました。
これは、私のインターフェースのUIDatePickerによって呼び出されるメソッドにあります。
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);
日付ピッカーを1年前の日付に設定すると、次のようになります。
1年1ヶ月1日16時間0分20秒
これは1か月と16時間のオフです。日付ピッカーを過去1日に設定した場合、同じ金額だけオフになります。
更新:私はあなたの誕生日(UIDatePickerから設定)を与えられてあなたの年齢を年単位で計算するアプリを持っていますが、それはしばしばオフでした。これは不正確さがあったことを証明していますが、それがどこから来たのかわかりませんね。