0
내 앱에서 자정까지 카운트 다운 중입니다. 유일한 문제는 카운트 다운 타이머가 항상 5 분 이상 꺼져 있다는 것입니다. 자정까지 남은 실제 시간을 절대로 닫지 않습니다. 나는 수학을했고 그것이 정확하다는 것을 꽤 확신하지만 어쩌면 어리석은 실수를 저지르고있다.카운트 다운 타이머가 정확하지 않습니다.
-(void) timerRun
{
NSDateFormatter *formatterAmPm = [[NSDateFormatter alloc] init];
[formatterAmPm setTimeZone:[NSTimeZone timeZoneWithName:@"America/New_York"]];
[formatterAmPm setDateFormat:@"a"];
NSString *amPmString = [formatterAmPm stringFromDate:[NSDate date]];
secondsCount = secondsCount + 1;
int hours = ((12*3600)-(secondsCount))/3600;
int minutes = ((12*3600)-(secondsCount)-(hours*3600))/60;
int seconds = ((12*3600)-(secondsCount)-(hours*3600))%60;
NSString *timerOutput = [NSString stringWithFormat:@"%.2d:%.2d:%.2d", hours, minutes, seconds];
_countDownLabel.text = timerOutput;
if ((secondsCount == 0) && ([amPmString isEqualToString:@"AM"]))
{
[_countdownTimer invalidate];
_countdownTimer = nil;
MainViewController *ViewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
ViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self.navigationController pushViewController:ViewController animated:YES];
self.sidePanelController.centerPanel = [[UINavigationController alloc] initWithRootViewController:[[MainViewController alloc] init]];
}
}
-(void) setTimer
{
NSDateFormatter *formatterHour = [[NSDateFormatter alloc] init];
[formatterHour setTimeZone:[NSTimeZone timeZoneWithName:@"America/New_York"]];
[formatterHour setDateFormat:@"HH"];
NSDateFormatter *formatterMinute = [[NSDateFormatter alloc] init];
[formatterMinute setTimeZone:[NSTimeZone timeZoneWithName:@"America/New_York"]];
[formatterMinute setDateFormat:@"mm"];
NSDateFormatter *formatterSecond = [[NSDateFormatter alloc] init];
[formatterSecond setTimeZone:[NSTimeZone timeZoneWithName:@"America/New_York"]];
[formatterSecond setDateFormat:@"ss"];
NSDateFormatter *formatterAmPm = [[NSDateFormatter alloc] init];
[formatterAmPm setTimeZone:[NSTimeZone timeZoneWithName:@"America/New_York"]];
[formatterAmPm setDateFormat:@"a"];
NSString *amPmString = [formatterAmPm stringFromDate:[NSDate date]];
NSString *hourString = [formatterHour stringFromDate:[NSDate date]];
NSString *minuteString = [formatterHour stringFromDate:[NSDate date]];
NSString *secondString = [formatterHour stringFromDate:[NSDate date]];
int hour = (([hourString intValue]) * 60 * 60);
int minute = (([minuteString intValue]) * 60);
int second = [secondString intValue];
if ([amPmString isEqualToString:@"PM"])
{
stopTime = 12*60*60;
}
else
{
stopTime = 24*60*60;
}
secondsCount = hour + minute + second;
secondsCount = secondsCount - stopTime;
_countdownTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerRun) userInfo:nil repeats:YES];
}
NSTimers는 실행 루프에 묶여 있기 때문에 시간을 정확하게 추적 할 수 없습니다. – CodaFi