2012-06-03 1 views
0

에 문제에 저를 가져옵니다 00:00. 저는 GMT + 2에, 그래서 시간대는 +0200입니다. 내 날짜 객체는이 NSLog 출력에 따라, GMT에서 2012년 1월 1일, 22시 0분 0초보고 :CalEvent 내가 CalCalendar에서 올 데이 이벤트와 시간대에 문제가 시간대

"Set daytype ptd on 2012-01-01 22:00:00 +0000" 

또한 도 1 월 1 일에 올 데이를 생성!

모든 시간대에 대해 의 allday 이벤트를 설정하려면 어떻게해야합니까?? 3 시간을 쉽게 추가 할 수 있지만 전 세계적으로 작동하지 않습니다!

+0

나는 다음과 같은 날짜에 추가하고있다 :'date = [date dateByAddingTimeInterval : [[NSTimeZone systemTimeZone] secondsFromGMT]];'. 그것은 그것이되어야하는 것이 아닙니다. 누구든지 더 좋은 제안이 있습니까? 내 systemTimeZone에 CalEvent를 표시하는 날짜를 원합니다. – markjs

답변

1

date이 현재 시간대의 올바른 날짜에있는 동안에는 그대로 사용할 수 있습니다. 당신이 NSLog를 통해 저장된 날짜를 인쇄 경우가 있기 때문에 발생 볼

은 "문제"(또는 디버거에서) 항상 당신이있는 시간대에 대한 지식이없는 당신 GMT 시간 NSDate 때문에 표시됩니다 in.

그러나 date은 특정 시점이므로 사용자에게 날짜 형식 지정 프로그램을 사용하여 형식을 지정하면 시간대와 상관없이 올바른 날짜와 시간이 표시됩니다 그것은 일관되게 유지됩니다.

여러 시간대의에 걸쳐 에 걸쳐 같은 날짜 인 특정 시점이 필요한 경우에만 시간 추가/삭제에 대해 걱정할 필요가있는 유일한 상황입니다.

편집 : 당신은 GMT 시간대에 날짜를 만들 필요가 있으므로 iCal은이 모든 것을 저장 GMT 시간을 사용처럼
그래서이 보인다. 이와 관련하여 도움이 필요하면 NSDate을 만드는 곳에 코드를 올리십시오. 올바른 방향으로 안내해 드리겠습니다.

+0

내가 가진 진정한 문제는 내 하루 종일 이벤트가 1 월 1 일 **에 생성되고 2 번째 이벤트가되어야한다는 것입니다. 내 시스템 시간대 GMT + 2는 "00:00 on 2nd"을 "22:00 1st"로 변환합니다. 물론, 나는'[event setStartDate date]'를 사용하여'CalEvent'를 설정하고 있으며, 결코 저장된 날짜를 출력하지 않습니다! 내가 진짜 문제에서주의를 산만하게하기 때문에 나는 게시물에서 NSLog 문을 제거했다 .... – markjs

+0

inafziger에서 편집에 관한 : 그 합리적인 소리 않습니다. 나는 아직도 조금 혼란 스럽다. 질문에서 예를 들어 봅시다. 2 시간을 추가하여 GMT 종일 이벤트로 변환하고 ICal의 "시간대"기능이 켜지면 여전히 작동 할 수 있습니다. 그러나 전 세계 어디에서나 사용할 수있는 솔루션을 선호합니다. 이 문제를 해결해야하는 것도 좌절감을 자아냅니다. 나는 API에 불일치가 있다는 것보다 잘못된 것을 할 가능성이 더 높습니다. – markjs

+0

CalendarStore.h를 사용할 때 해결 방법으로 처리 할 것 같습니다. 10.8에서는 OSX에서 EventKit을 사용할 수있게되어 이러한 문제를 해결할 수 있습니다. 나는 그냥 거기에 매달려, 더러운 속임수를 사용하여 일들을 지금 당장하고, 빨리 업그레이드 해 .... 고마워요. lnafziger! – markjs