2014-05-09 3 views
0

나는 한 날짜에서 다른 날짜까지의 일수를 계산하려고하고 있으며 이렇게하는 두 가지 방법을 찾았습니다.NSDateComponents 대 timeIntervalSince

NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit 
                fromDate:date1 
                 toDate:date2 
                options:0]; 

을하고 [성분 일]에 의하면 다음과 같이

첫번째 NSDateComponents를 이용한다.

NSInteger timeInterval = [date2 timeIntervalSinceDate:date1]; 

후 점점 TimeInterval이/24분의 3,600

(아마도 때문에 TimeInterval이 방법과 부족의 정밀도)이 다른 쪽보다 더 나은 방법입니다 :

두 번째

는 TimeInterval이 사용?

감사합니다.

답변

1

dateComponent를 사용하면 timeInterval/3600/24을 가정하면 훨씬 더 좋습니다.

이유 :

  1. 모든 일이 60 * 60 * 24 초 없습니다!

  2. 일광 절약 시간제에서 전환하는 동안 하루가 23 시간 또는 25 시간을 가질 수 있습니다.

시침 (공통 기호 : H 또는 HR)가 시간의 측정 단위이다. 현대 사용에서 한 시간은 60 분 또는 3600 초로 구성됩니다. 평균 태양 일의 약 1/24는 입니다.

유니버설 표준시 (UTC) 시간 기준 수있는 시간이 제

제외 또는 도약을 포함하므로 조정 상업적 또는 3,599 3천6백1초 의 지속 기간을 가질 수있다.

출처 : Wikipedia Hour.

+2

유닉스 시간은 윤년을 계산하지 않기 때문에 윤초가 NSDateComponents를 사용해야하는 이유가 아닙니다. 유닉스 시간 숫자는 매시 3600만큼 정확하게 증가합니다. - 진정한 이유는 하루에서 23 시간 또는 25 시간이 소요되는 일광 절약 시간제 (Daylight Saving Time)로 전환하는 것입니다. –

+0

두 분 모두에게 감사드립니다! DST에 관한 권리. – sternhenri

관련 문제