У меня есть временной интервал, охватывающий годы, и я хочу, чтобы все компоненты времени составляли год от года до нескольких секунд.
Моя первая мысль состоит в том, чтобы целое число делит интервал времени на секунды в году, вычитайте из текущего количества секунд, разделите его на секунды за месяц, вычтите из текущего количества и т.д.
Это просто кажется запутанным, и я читал, что всякий раз, когда вы делаете что-то свернутое, возможно, есть встроенный метод.
Есть ли?
Я включил 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 месяц 1 день 16 часов 0 минуты 20 секунд
который составляет 1 месяц и 16 часов. Если я установил выбор даты до 1 дня в прошлом, я отключусь на ту же сумму.
Обновить. У меня есть приложение, которое рассчитывает ваш возраст в годах, учитывая ваш день рождения (установленный из UIDatePicker), но он часто отключается. Это доказывает, что была неточность, но я не могу понять, откуда она взялась, не так ли?