NSDate는 UTC/GMT라는 것을 알고 있습니다. 즉, 시간대 정보가 연결되어 있지 않습니다.NSCalendar 구성 요소가 시간을 고려하지 않음
NSCalendar, NSTimeZone 및 NSDateComponents와 같은 상위 수준의 클래스에는 시간대를 고려합니다.
이를 바탕으로 다음 코드를 사용하여 두 날짜 간의 일 수 차이를 계산합니다. 그러나 계산이 시간을 모두 무시하고 완료되는 것처럼 나는 얻는 결과가 보인다. 나는 틀린 일을하고 있는지 또는 이것이 어떤 이유로 디자인에 의한 것인지 궁금합니다. 여기
코드 및 데이터입니다 :NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comp = [calendar components:NSDayCalendarUnit fromDate:startDate toDate:stopDate options:0];
NSInteger day = [comp day];
디버그 출력 :
(gdb) po startDate
2011-04-01 03:52:13 +0000
(gdb) po stopDate
2011-04-03 15:52:13 +0000
(gdb) p (int) day
$1 = 2
시간대는 태평양 표준시 태평양 표준시로 변환 위의 날짜 인은 다음과 같습니다
startDate = 2011-03-31 8:52:13 -7
stopDate = 2011-04-03 8:52:13 -7
그러므로 나는 2 일이 아닌 4 일간을 기대한다. (31, 1, 2, 3)
시간이 무시되는 이유는 계산에 시간을 추가하면 2 일과 12 시간이 걸리기 때문입니다.
내가 잘못한 일을하고 있습니까? 아니면 어떻게 작동하도록 설계 되었습니까?
, 감사 그렇진 밴스