1

現在から将来発生する希望のNSDateまでのカウントダウンをHH:mm:ss形式で表示するにはどうすればよいですか?

4

3 に答える 3

5

ドキュメントから始めます。

NSDate *future = // whatever

[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateCounter:) userInfo:nil repeats:YES];

- (void)updateCounter:(NSTimer *)tmr
{
    NSTimeInterval iv = [future timeIntervalSinceNow];
    int h = iv / 3600;
    int m = (iv - h * 3600) / 60;
    int s = iv - h * 3600 - m * 60;
    aUILabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d", h, m, s];
    if (h + m + s <= 0) {
        [tmr invalidate];
    }
}
于 2013-01-18T19:30:21.723 に答える
4

あなたは日付を刻むためにタイマーを使わなければなりません。

将来の日付を保存し、将来の日付を差し引き続けます-[今日のnsdate] .. ..

時間を秒単位で計算し、それを時間、分、秒に計算します。

//2つのプロパティを作成しますNSDate *nowDate, *futureDate

futureDate=...;

nowDate=[NSDate date];

long elapsedSeconds=[nowDate timeIntervalSinceDate:futureDate];
NSLog(@"Elaped seconds:%ld seconds",elapsedSeconds);

NSInteger seconds = elapsedSeconds % 60;
NSInteger minutes = (elapsedSeconds / 60) % 60;
NSInteger hours = elapsedSeconds / (60 * 60);
NSString *result= [NSString stringWithFormat:@"%02ld:%02ld:%02ld", hours, minutes, seconds];

これはあなたにとって便利です...親切にプロジェクトをチェックしてください...

于 2013-01-18T19:27:45.277 に答える
2

このコードを試してみてください:

NSTimer* timer= [NSTimer scheduledTimerWithInterval: [self.futureDate timeIntervalSinceNow] target: self selector: @selector(countdown:) userInfo: nil, repeats: YES];

カウントダウン: メソッド:

- (void) countdown: (NSTimer*) timer
{
    if( [self.futureDate timeIntervalSinceNow] <= 0)
    {
        [timer invalidate];
        return;
    }
    NSDateComponents* comp= [ [NSCalendar currentCalendar] components: NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit startingDate: [NSDate date] toDate: self.futureDate options: 0];
    NSLog(@"%lu:%lu:%lu", comp.hour,comp.minute.comp.second);
}
于 2013-01-18T19:43:49.313 に答える