다음과 같이 문자열이 있습니다.두 시간 간격 사이의 시간 차이 계산 - 논리 문제
NSString *time = "06.45 pm";
나는 이번에는 오늘 날짜에 있다고 가정하고 현재 시스템 시간을 얻고, 둘 사이의 시간 차이를 계산해야합니다.
어떻게하면됩니까?
참고 : 위의 시간이 date
를 지정하지 않는,
다음과 같이 문자열이 있습니다.두 시간 간격 사이의 시간 차이 계산 - 논리 문제
NSString *time = "06.45 pm";
나는 이번에는 오늘 날짜에 있다고 가정하고 현재 시스템 시간을 얻고, 둘 사이의 시간 차이를 계산해야합니다.
어떻게하면됩니까?
참고 : 위의 시간이 date
를 지정하지 않는,
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));
을 왜 계산하고 손으로 결과를 포맷입니까? 'timeIntervalSinceDate :'와 다른 날짜 포매터를 사용하십시오. –
예, 솔루션이 작동합니다. 그러나 당신이 준 예제에서'timeIntervalSinceDate'를 어떻게 사용할 수 있습니까? –
나는 그것을 편집했다. 고마워 ;-) – Joey
당신이 일정 작업을 사용하는이 작업을 수행 할 때 계정 시간에 발생하도록 있는지 확인합니다 (만 시간이 주어집니다) 변경 사항 (일광 절약 시간, 윤년 등) :
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];
행운이? – lnafziger
현재 시스템 시간은 초, 일, 달 및 년을 포함하는 정확한 시점입니다. 수학을하기 위해 어떤 일을하던간에 그 문자열이 오후 6시 45 분을 나타내 길 원합니까? –
오후 6시 45 분은 오늘 날짜 여야합니다. 그래서 현재 시간에서 6.45 pm까지의 시간차를 계산합니다. 나는'timeIntervalSinceDate :'를 사용할 필요가 있지만 시간 차이를 얻는 방법을 모르겠습니다. –
'시간'은 현재 시스템 시간과 같은 날짜임을 어떻게 알 수 있습니까? – HelmiB