4

NSDate からカウントダウンして、時間と分で表示しようとしています。このように: 1h:18min

現時点では、私の日付は UILabel に更新され、カウントダウンしていますが、次のように表示されています。

タイマー カウントダウン ラベル

これが私が使用しているコードです。startTimer メソッドと updateLabel メソッド

 - (void)startTimer {
        // Set the date you want to count from

    // convert date string to date then set to a label
    NSDateFormatter *dateStringParser = [[NSDateFormatter alloc] init];
    [dateStringParser setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.000Z"];

    NSDate *date = [dateStringParser dateFromString:deadlineDate];

    NSDateFormatter *labelFormatter = [[NSDateFormatter alloc] init];
    [labelFormatter setDateFormat:@"HH-dd-MM-yyyy"];

    NSDate *countdownDate = [[NSDate alloc] init];

    countdownDate = date; 

    // Create a timer that fires every second repeatedly and save it in an ivar
    NSTimer *timer = [[NSTimer alloc] init];

    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateLabel) userInfo:nil repeats:YES];

}

- (void)updateLabel {

    // convert date string to date then set to a label
    NSDateFormatter *dateStringParser = [[NSDateFormatter alloc] init];
    [dateStringParser setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.000Z"];

    NSDate *date = [dateStringParser dateFromString:deadlineDate];

    NSDateFormatter *labelFormatter = [[NSDateFormatter alloc] init];
    [labelFormatter setDateFormat:@"HH-dd-MM"];


    NSTimeInterval timeInterval = [date timeIntervalSinceNow]; ///< Assuming this is in the future for now.


    self.deadlineLbl.text = [NSString stringWithFormat:@"%f", timeInterval];
}

助けてくれてありがとう

4

2 に答える 2

9
- (NSString *)stringFromTimeInterval:(NSTimeInterval)interval 
  {
    NSInteger ti = (NSInteger)interval;
    NSInteger seconds = ti % 60;
    NSInteger minutes = (ti / 60) % 60;
    NSInteger hours = (ti / 3600);
    return [NSString stringWithFormat:@"%02i:%02i:%02i", hours, minutes, seconds];
  }
于 2012-11-13T12:16:00.180 に答える
2

NSTimeInterval を使用しているため、時間間隔、つまり差を秒単位で取得して、時間と分で表示するには、数学ロジックを適用して変換する必要があります! それを行うには、いくつかのループが必要です。

これを試して

よろしく

于 2012-11-13T12:09:44.787 に答える