创建一个计数器计时器,支持小时,分钟秒,分秒iPhone sdk

时间:2011-11-27 03:16:20

标签: iphone timer nstimer

有兴趣创建一个计时器以计算用户。

我想知道我是否必须单独跟踪所有整数变量,或者是否可以使用日期格式化程序。

我目前正在使用-scheduledTimerfoo来调用-updateLabel方法,但是在100秒后看起来有点可怕。我有点像“小时:分钟:秒:分秒”来显示。

干杯

萨姆

1 个答案:

答案 0 :(得分:4)

NSDateFormatter仅用于格式化日期,而不是时间间隔。更好的方法是记录启动计时器的时间,每隔一秒,用自启动计时器以来经过的时间更新标签。

- (void)startTimer {
    // Initialize timer, with the start date as the userInfo
    repeatTimer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateLabel) userInfo:[NSDate date] repeats:YES];
}

- (void)updateLabel:(NSTimer *)timer {
    // Get the start date, and the time that has passed since
    NSDate *startDate = (NSDate *)[timer userInfo];
    NSTimeInterval timePassed = [[NSDate date] timeIntervalSinceDate:startDate];

    // Convert interval in seconds to hours, minutes and seconds
    int hours = timePassed / (60 * 60);
    int minutes = ((int)timePassed % (60 * 60)) / 60;
    int seconds = (((int)timePassed % (60 * 60)) % 60);
    NSString *time = [NSString stringWithFormat:@"%i:%i:%i", hours, minutes, seconds];

    // Update the label with time string
}