2012-05-30 1 views
1

У меня есть строка со временем следующим образом;Рассчитать разницу во времени между двумя временными интервалами - Логическая проблема

NSString *time = "06.45 pm"; 

мне нужно предположить, что на этот раз на сегодняшнюю дату, а затем получить текущее системное время, и вычислить разницу во времени между ними.

Как я могу это сделать?

Примечания: Вышеуказанный срок не указан date (Только время дан)

+0

Текущее системное время - точное время во времени - оно включает секунды, день, месяц и год. Вы хотите, чтобы эта строка представляла 6:45 PM в любую дату, когда вы делаете математику или что? –

+0

6.45 вечера должно быть на сегодняшний день. Таким образом, чтобы вычислить разницу во времени от текущего времени до 6:45 вечера. Мне нужно использовать 'timeIntervalSinceDate:', но я не уверен, как получить разницу во времени. –

+0

Откуда вы знаете, что «время», которое вы дали, совпадает с датой текущего системного времени. – HelmiB

ответ

3
NSString *time = @"06.45 pm"; 

NSDate *date1; 
NSDate *date2; 
{ 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"hh.mm a"]; 
    date1 = [formatter dateFromString:time]; 
    date2 = [formatter dateFromString:[formatter stringFromDate:[NSDate date]]]; 
    [formatter release]; 
} 
NSTimeInterval interval = [date1 timeIntervalSinceDate: date2];//[date1 timeIntervalSince1970] - [date2 timeIntervalSince1970]; 
int hour = interval/3600; 
int minute = (int)interval % 3600/60; 

NSLog(@"%@ %dh %dm", interval<[email protected]"-":@"+", ABS(hour), ABS(minute)); 
+0

Почему вы вычисления и форматирования результата вручную? Используйте 'timeIntervalSinceDate:' и другой формат даты. –

+0

Да, ваше решение работает. но как я могу использовать 'timeIntervalSinceDate' в примере, который вы указали? –

+0

Я отредактировал его. Спасибо ;-) – Joey

2

Убедитесь, что когда вы делаете это, что вы используете календарь операции, так что он принимает во время счета изменения (летнее время, секунды прыжка и т. д.):

NSString *time = @"06.45 pm"; 
NSCalendar *cal = [NSCalendar currentCalendar]; 
NSDate  *today = [NSDate date]; 

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"hh.mm a"]; 

// Convert time to a NSDate and break it down into hours, minutes, and seconds: 
NSDate   *timeAsDate = [formatter dateFromString:time]; 
NSDateComponents *timeComps = [cal components:NSHourCalendarUnit | 
               NSMinuteCalendarUnit | 
               NSSecondCalendarUnit 
             fromDate:timeAsDate]; 

// Take today's date and add "time" to it: 
NSDateComponents *comps = [cal components:NSYearCalendarUnit | 
              NSMonthCalendarUnit | 
              NSDayCalendarUnit 
            fromDate:today]; 
comps.hour    = timeComps.hour; 
comps.minute    = timeComps.minute; 
comps.second    = timeComps.second; 
NSDate *timeOnTodaysDate = [cal dateFromComponents:comps]; 

// Now calculate the difference: 
NSTimeInterval difference = [today timeIntervalSinceDate:timeOnTodaysDate]; 
+0

Любая удача с этим? – lnafziger