2015-01-01 6 views
0

Прежде всего: хочу сказать счастливый новый год всем, кто это читает! Май 2015 года - отличный год для всех нас :-).Разница во времени Xcode в днях, часах, минутах и ​​секундах

Я занят выполнением функции, которая вычисляет разницу во времени между двумя датами. Точнее: время между датой и датой и текущим временем и датой. Таким образом, пользователь выбирает дату в прошлом, а затем программа показывает разницу во времени между указанной датой и текущей датой в таймере: «hh: mm: ss»

Работает нормально и обновляется каждую секунду, когда я выбираю время сегодняшней даты (01-01-2015 10:00:00), но при выборе даты и времени в прошлом (31-12-2014 17:00:00) и сравните его с сегодняшней датой, когда время раньше, чем вчера (01-01-2015 14:01:01), это дает мне отрицательное время, как своего рода таймер обратного отсчета: -2: -59: -59.

Но я хочу, чтобы он показывал противоположное: 21:01:01 и, если возможно, если он превышает 24:00:00, просто рассчитывайте. Например, 25:12:39.

Это код, который вычисляет разницу:

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"dd-MM-YYYY HH:mm:ss"]; 
NSDate *date1 = [df dateFromString:[NSString stringWithFormat:@"30-12-2014 %@", startedTime]]; 
NSDate *date2 = [df dateFromString:[NSString stringWithFormat:@"31-12-2014 %@", [self getCurrentTime]]]; 
NSTimeInterval interval = [date2 timeIntervalSinceDate:date1]; 

int hours = (int)interval/3600;    // integer division to get the hours part 
int minutes = (interval - (hours*3600))/60; // interval minus hours part (in seconds) divided by 60 yields minutes 
int seconds = (interval - (hours*3600) - (minutes*60)); // interval minus hours part (in seconds) divided by 60 yields minutes 

NSString *timeDiff = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds]; 
_workingTime.text = [NSString stringWithFormat:@"%@",timeDiff]; 

Может кто-то пожалуйста, помогите?

ответ

1
[df setDateFormat:@"dd-MM-yyyy hh:mm:ss"]; 

Попробуйте изменить эту строку!

И это .. наконец.

NSTimeInterval interval = [date2 timeIntervalSinceDate:date1]; 
if(interval < 0) { 
    interval = [date1 timeIntervalSinceDate:date2]; 
} 

More about date formats here

+0

Вы удивительным. Не могу поверить, что я этого не видел. Особенно первая часть. Спасибо, что работает сейчас! –

Смежные вопросы