2 개월 전 App Store에 첫 번째 앱을 출시했으며 지금까지 성공했습니다. 나는 최근에 그러나 문제를 발견했다.iOS 앱 다른 시간대 치료 날짜 항목
응용 프로그램의 전제는 주어진 돈 봉투를 추적 할 수있게하는 것입니다. 그것은 항목을 추가 할 수있는 간단한 응용 프로그램이며 탭 모음에서 다른 탭의 이름, 이벤트 및 연도로 필터링 한 다음 시간순 타임 라인을 표시합니다. 시간대를 변경할 때를 제외하고는 전 세계에서 잘 작동합니다.
앱은 NSPredicate
수표를 포함하여 백그라운드에서 핵심 데이터를 사용합니다. "내가 선택한 올해가 이미 존재한다면 반환 할 것이고 그렇지 않으면 반환 할 것입니다. 올해의 새 항목을 만듭니다." . 따라서 2014 년 한 항목과 2013 년 2013 년 중 하나가있는 경우 연도 탭에 2014 년 한 항목과 2013 년 한 항목이 표시됩니다. 2014 년에 다른 항목을 추가하면 두 항목이 모두 표시되지 않습니다. 1 년 탭이지만 여전히 2014 년 단일 항목이 있습니다 (아래의 모든 거래가 포함됨).
날짜는 UIDatePicker
을 사용하여 선택되어 실제 날짜를 얻습니다.
시간대를 변경할 때 문제가 발생합니다. 이렇게하면 연도가 2014 인 항목이 이전 2014 년과 동일한 항목으로 더 이상 인식되지 않으므로 올해 탭에서 여러 개의 2014 항목으로 끝납니다. 물론 이해가되지 않습니다.
타이밍과 관련되어 있다는 것을 알았습니다. 시간대를 사용하지 않고, NSGregorianCalendar
기능을 사용하고 있습니다. 내가 말 GMT의 시간대를 지정 가야하지만 때문에 일광 절약 등의, 내가 '얼마나 (내가 그것을 같은 방식으로 작업 할) 응용 프로그램의 너무 많은 여기에 기능을 변경하지 않고
NSCalendar *yearCal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *yearComponent = [yearCal components:NSYearCalendarUnit fromDate:self.datePicker.date];
NSDate *selectedYear = [yearCal dateFromComponents:yearComponent];
, d를 표준으로 12시 GMT와 같은 것으로 유지하고 싶으므로 세계 어느 곳에 있더라도 시간은 GMT 12시에 초점을 맞출 것입니다.
나는 이것이 의미가 있지만 모든 도움을 주시면 감사하겠습니다.
감사합니다,
일반적으로 GMT 시간대가있는 dateFormatter를 사용하여 날짜 문자열을 구문 분석하고 날짜 문자열을 제로 시간대 (예 : @ "01/01/2014 +000")로 보내거나 받고 있습니다. 'NSDateFormatter * dateFormatter = [NSDateFormater new]; [dateFormatter setTimeZone : [NSTimeZone timeZoneForSecondsFromGMT : 0]]'.그 정확한 해결책은 확실하지 않지만 내 요구에 잘 맞습니다. –
친애하는 Mykola - 답장을 많이 보내 주셔서 감사합니다. 마틴의 답변을 사용하여이 작업을 수행했지만 잘 이해하고 있습니다. 감사드립니다. – amitsbajaj