2012-05-30 17 views
1

다음과 같이 문자열이 있습니다.두 시간 간격 사이의 시간 차이 계산 - 논리 문제

NSString *time = "06.45 pm"; 

나는 이번에는 오늘 날짜에 있다고 가정하고 현재 시스템 시간을 얻고, 둘 사이의 시간 차이를 계산해야합니다.

어떻게하면됩니까?

참고 : 위의 시간이 date를 지정하지 않는,

+0

현재 시스템 시간은 초, 일, 달 및 년을 포함하는 정확한 시점입니다. 수학을하기 위해 어떤 일을하던간에 그 문자열이 오후 6시 45 분을 나타내 길 원합니까? –

+0

오후 6시 45 분은 오늘 날짜 여야합니다. 그래서 현재 시간에서 6.45 pm까지의 시간차를 계산합니다. 나는'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