나는 응용 프로그램을 만들었습니다. 카운트 다운 타이머를 시작하고 데이터베이스에 이중 값으로 현재 날짜를 저장합니다. 또한 카운트 다운 타이머에 따라 종료일을 저장합니다. 종료 후 응용 프로그램으로 돌아가서 시간 형식 데이터베이스를 얻게됩니다. 현재 날짜와 시작 날짜를 설정하고 that.but에 따라 카운트 다운을 설정하면 문제가 발생합니다. 시간이 8 시간 앞당겨지면 카운트 다운 타이머가 다르게 동작합니다. 사용자가 시간 또는 시간대를 변경 한 것을 발견합니까? 에 의해 나는 시간대를 변경하면 새로운 델리가 잘 작동하지만 같은 시간대에서 내가 늘리거나 줄이면 날짜 또는 시간이 예상대로 작동하지 않는다고 생각합니다. 이걸 어떻게 관리합니까? 증가/감소 날짜 나 시간은 앱이 바로 드릴 수 없습니다 launched.i 그것은 당신의 타이머가 정확하려면해당 사용자가 iPhone SDK에서 시간이 변경된 것을 찾는 방법은 무엇입니까?
답변
그것을 알아낼으로 닫을 때
또한 난 당신이 단지를 사용해야 이상한 문제를 보았다 종료일. 나는 왜 당신이 시작 날짜를 지키고 싶어하는지 모르겠다. 여기 연속 카운트 다운 예입니다 :// I'm assuming you want to update the countdown every seconds
// So you should set a timer like this somewhere
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerTick) userInfo:nil repeats:YES];
- (void)updateCountdown {
NSTimeInterval timeInterval = [endDate timeIntervalSinceNow];
unsigned int d, h, m, s;
NSTimeInterval r;
d = timeInterval/(24 * 3600);
r = timeInterval - d * 24 * 3600;
h = r/3600;
r = r - h * 3600;
m = r/60;
r = r - m * 60;
s = r;
NSString *countdown = [NSString stringWithFormat:@"%.2d:%.2d:%.2d:%.2d", d, h, m, s];
// Now you could use countdown to update the text of a UILabel
}
- (void)timerTick {
if ([endDate compare:[NSDate date]] == NSOrderedDescending) {
//endDate is later in time than "now", ie not yet reached
[self updateCountdown];
} else {
//stop the countdown
[timer invalidate];
}
}
endDate
카운트 다운이 모든 초 조정되기 때문에 카운트 다운이 0
에 도달해야하는 날짜를 포함하는있는 NSDate해야 당신은하지 않습니다 시스템 시간 또는 시간대가 변경 되더라도 문제가 발생합니다.
그러나 앱을 다시 시작하거나 종료 할 때 endDate를 올바르게 저장하고 복원해야합니다. 즉, 항상 고정 참조를 사용해야합니다. NSDate 클래스의 timeIntervalSinceReferenceDate 및 dateWithTimeIntervalSinceReferenceDate :를 사용합니다.
한 번이 같은 endDate
사용 뭔가 타이머 발사를 가진 단지 관심이 있다면 : 나는 당신이 응용 프로그램 ISN '동안 시간을 변경하는 사용자의 주위에 얻을 수있는 방법 확실하지 않다
NSTimer* timer = [[NSTimer alloc] initWithFireDate:endDate
interval:0.0f
target:self
selector:@selector(endDateReached:)
userInfo:nil
repeats:NO];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
[timer release];
실행 중. 하지만 당신이 startDate 또는 타이머의 기간을 저장할 필요가 있다고 생각하지 않습니다. 당신이 할 수있는 일은 endDate를 데이터베이스에 저장하는 것입니다. 나는 그리니치 표준시와 같은 시간대를 불가지론 방식으로 시도하고 저장할 것이다.
그런 다음 응용 프로그램이 다음에 시작될 때 데이터베이스에 저장된 날짜를 가져 와서 다시 현지 시간으로 변환하십시오. 또한 응용 프로그램이 시작될 때 NSDate 클래스에서 현재 시간을 가져옵니다. 그러면 변환 된 endDate에서 현재 시간을 빼서 타이머 지속 시간을 계산할 수 있습니다.
사용자가 시간대를 변경하고 올바른 시간에 화재 이벤트를 발생시킬 수 있어야합니다. 또한 데이터베이스에 저장하는 것이 적을 것입니다.
- 1. 자바 - 사용자가 구성 파일을 변경 한 것을 찾는 방법은 무엇입니까?
- 2. iPhone SDK에서 UIBarButtonItem 아이콘을 추출하는 방법은 무엇입니까?
- 3. 해당 nullable 유형을 찾는 현명한 방법은 무엇입니까?
- 4. iphone sdk에서 NSData를 CGDataProviderRef로 변환하는 방법은 무엇입니까?
- 5. iPhone SDK에서 tableview를 가로로 스크롤하는 방법은 무엇입니까?
- 6. iPhone SDK에서 Facebook 언어를 변경하는 방법은 무엇입니까?
- 7. iPhone SDK에서 LinkedIn API를 사용하는 방법은 무엇입니까?
- 8. NStimer와 iphone SDK에서 오디오를 동기화하는 방법은 무엇입니까?
- 9. iPhone SDK에서 Facebook 알림을받는 방법은 무엇입니까?
- 10. iPhone SDK에서 TableView의 Summation을 표시하는 방법은 무엇입니까?
- 11. 콘텐츠가 잘린 것을 찾는 방법은 무엇입니까?
- 12. iphone sdk에서 UIImagePicker를 우회
- 13. iPhone SDK에서 다른 UIViewConroller의 viewWillAppear 이벤트에 UIViewController를 표시하는 방법은 무엇입니까?
- 14. iphone sdk에서 대리인 사용
- 15. iphone sdk에서 이름과 성을 사용하여 linkedin 프로필을 여는 방법은 무엇입니까?
- 16. iPhone SDK에서 CLLocationCoordinate2D 관찰
- 17. Java에서 해당 메소드 내에서 메소드 이름을 찾는 방법은 무엇입니까?
- 18. iPhone SDK에서 화면 수를 표시하는 가장 좋은 방법은 무엇입니까?
- 19. iPhone SDK에서 스 와이프하여 컨트롤러를 밀거나 팝하는 방법은 무엇입니까?
- 20. iphone CoreLocation 데이터의 출처를 찾는 방법은 무엇입니까?
- 21. iPhone - 참조하는 개체를 찾는 방법은 무엇입니까?
- 22. iPhone SDK에서 이와 같은 위젯을 구현하는 가장 좋은 방법은 무엇입니까?
- 23. iPhone SDK에서 이름을 지정하여 위치를 검색하는 방법은 무엇입니까?
- 24. iPhone Folders와 같은 것을 만드는 방법은 무엇입니까?
- 25. 아이폰에서 VoIP를 통한 VoIP, SDK에서 변경된 사항은 무엇입니까?
- 26. 컨트롤에 적용 할 스타일을 찾는 방법은 무엇입니까?
- 27. iPhone SDK에서 벨소리 설정
- 28. iPhone SDK에서 비디오로 열기
- 29. mach_msg_trap이 기다리는 것을 찾는 방법?
- 30. SavingChanges의 엔터티 내에서 컬렉션이 변경된 것을 어떻게 감지합니까?
나는 정확하게 당신이 말하는 것을하고 있습니다. 나는 db에 끝 날짜를 저장하고 있습니다. 다시 실행하면 로컬 시간이 생깁니다.하지만 nsdate 클래스에서 현재 시간을 얻으면 2 시간 후에 현재 nsdate가 잘못 반환됩니다. 시간. 그 끝 날짜와 현재 날짜 사이의 차이가 예상대로되지 않습니다. 그 proble.how 나는이 문제를 극복합니까 –