В настоящее время я записываю время между двумя событиями в десятичных минутах, используя:
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDate *date = [NSDate date];
NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date];
CGFloat hour = [dateComponents hour];
CGFloat minute = [dateComponents minute];
CGFloat second = [dateComponents second];
//set start time in decimal minutes
CGFloat startTime = ((hour*3600.0)+(minute*60.0)+(second))*.016666;
//do work...
//set end time in decimal minutes
CGFloat endTime = ((hour*3600.0)+(minute*60.0)+(second))*.016666;
//calculate time elapsed in decimal minutes
CGFloat totalTime = endTime-startTime;
Проблема, с которой я сталкиваюсь, заключается в том, что я действительно получаю время только в секундах, а затем конвертирую в десятичные минуты. Итак, единственные значения, которые я получаю, это 0.016663
(одна секунда в десятичных минутах), 0.033325
(две секунды в десятичных минутах), 0.049988
(три секунды в десятичных минутах) и т. д. Я не получаю никаких промежуточных значений. Есть ли способ получить более точное время? Я проверил, есть ли у NSDateComponents
свойство millisecond
или еще что-то, но ничего не нашел.
Спасибо!