Форматирование NSDate в NSTimer

Поэтому у меня есть NSTimer и im, используя формат даты, чтобы приостановить и воспроизвести таймер, но когда я запустил таймер, он начинается в 07:00:00, когда я хочу, чтобы он начинался в 00:00:00.

Мой код таймера

-(void) updateTimer {

 NSDate *currentDate = [NSDate date];

 NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];
 NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
 dateFormatter.dateFormat = @"hh:mm:ss";
 //[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];

 NSString *timeString = [dateFormatter stringFromDate:timerDate];
 hhmmssLabel .text = timeString;
 pauseTimeInterval = timeInterval;

}

-(void)pauseTimer {

 [tickerTimer invalidate];
 tickerTimer = nil;
 [self updateTimer];
}

-(void) unPauseTimer {

 startDate = [NSDate date] ;
 startDate = [startDate dateByAddingTimeInterval:((-1)*(pauseTimeInterval))];
 tickerTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/1.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];
}

Я предполагаю, что это связано с часовым поясом, поэтому я прокомментировал это, что не помогло. Я не могу заставить его начать в 00:00:00

1 ответ

Я думаю, вы можете упростить вам код litte. Ваши требования не слишком сложны (вы просто имеете дело с интервалами, а не абсолютными датами), поэтому было бы хорошо использовать что-то вроде этого:

NSDate * currentDate = [NSDate date];
NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];

// NSTimeInterval is in measured in Seconds
NSInteger hours = ( (NSInteger) timeInterval / 3600.0 );
NSInteger mins = ( (NSInteger) (timeInterval / 60) % 60 );
NSInteger secs = ( (NSInteger) timeInterval % 60.0 );

NSString * timeString = [NSString stringWithFormat:%02u:%02u:%02u, hours, mins, secs];

В противном случае попробуйте посмотреть на этот ответ. Perhapse вам нужно @"HH:mm:ss" (для 24-часового времени) или [NSTimeZone timeZoneWithName:@"UTC"]];

licensed under cc by-sa 3.0 with attribution.