1600 년 1 월 1 일부터 처리해야하는 날짜가 저장되어 있습니다. 이것은 필자의 어플리케이션에서 여러 번 읽을 필요가있는 레거시 날짜 형식입니다.1600 년부터 NSDate까지의 날짜?
이전에, 나는이 같은 달력, 빈 날짜 구성 요소 및 루트 날짜 생성하고 있었다 :
[offset setDay: theLegacyDate];
id eventDate = [gregorian dateByAddingComponents: offset
toDate: rootDate
options: 0];
: 다음
self.gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar
] autorelease];
id rootComponents = [[[NSDateComponents alloc] init] autorelease];
[rootComponents setYear: 1600];
[rootComponents setMonth: 1];
[rootComponents setDay: 1];
self.rootDate = [gregorian dateFromComponents: rootComponents];
self.offset = [[[NSDateComponents alloc] init] autorelease];
을 날짜로 나중에 정수를 변환, 나는 이것을 사용
은 (내가 다른 곳 오프셋에있는 값을 변경하지 않습니다.)
문제는 내가, 내가 midn 받고 있어요 맥 OS X에서 맥 OS X 대 iOS에서 rootDate
에 대해 다른 시간을 얻고있다 ight. iOS에서는 8시 12 분 28 초에 도착합니다. (지금까지는 이것에 대해 일관된 것처럼 보입니다.) 나중에 며칠을 추가하면 기묘한 시간이 그대로 유지됩니다.
OS | legacyDate | rootDate | eventDate ======== | ========== | ==========================|========================== Mac OS X | 143671 | 1600-01-01 00:00:00 -0800 | 1993-05-11 00:00:00 -0700 iOS | 143671 | 1600-01-01 08:12:28 +0000 | 1993-05-11 07:12:28 +0000
이전 제품 릴리스에서는 시간에 신경 쓰지 않았습니다. 지금 나는 그렇다. 왜 iOS에서 이상한 시간을 보내고 무엇을해야합니까? (시간 차이가 DST라고 가정합니다.)
rootComponents의시, 분, 초를 0으로 설정해 보았습니다. 아무런 영향이 없습니다. 0 이외의 값으로 설정하면 8:12:28에 추가됩니다. 나는 이것이 윤초 또는 다른 누적 시계 변경과 관련이 있는지 궁금해하고있다.
아니면 iOS에서 완전히 잘못된 접근 방식입니까?
이 좋은 생각이지만, 불행하게도 여전히 +/- 1 시간 오류를 떠난다. –