Сравнение дат внутри nstimer селектора - PullRequest
0 голосов
/ 08 февраля 2011

Я пишу приложение для отсчета времени, такое как вкладка таймера в приложении часов iPhone.Сейчас у меня проблемы с датами, «сейчас» и «будущей датой».все переменные синтезируются и являются неатомными и сохраняют.У меня есть этот код прямо сейчас.

- (IBAction)startTimer:(id)sender {
    NSLog(@"startTimer");
    pickerView.hidden = YES;
    labelView.hidden  = NO;
    now = [[NSDate alloc] init];
    futureDate = [[NSDate alloc] initWithTimeInterval:picker.countDownDuration sinceDate:now];
    NSLog(@"Dates.\nNow = (%@)  \nfutureDate (%@)", now, futureDate);
    timerLabelUpdater = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(labelUpdater) userInfo:nil repeats:YES];
}

- (void)labelUpdater {
    if ([now timeIntervalSinceDate:futureDate] < 0.0) {
        NSLog(@"YES\nDates.\nNow = (%@)  \nfutureDate (%@)", now, futureDate);
    } else {
        NSLog(@"NO\nNow = (%@)  \nfutureDate (%@)", now, futureDate);
    }
}

Информация об отладчике: 2011-02-08 16: 46: 02.449 Приложение [22504: 207] startTimer 2011-02-08 16: 46: 02.451 Приложение [22504:207] Даты.Сейчас = (2011-02-08 18:46:02 +0000)
futureDate (2011-02-08 18:47:02 +0000) 2011-02-08 16: 46: 03.451 Приложение [22504: 207]ДА

И это даёт мне да "навсегда".Но если вы видите переменные часы, они будут + 2 часа в будущем по сравнению с моими часами.Это ошибка?

1 Ответ

0 голосов
/ 08 февраля 2011

Извините, если if проверял неправильную дату, сравнивая переменную now и futureDate, интервал времени будет всегда один и тот же. Я заменил переменную now для [[NSDate alloc] init] в тесте. Прямо сейчас код работает.

if ([[[NSDate alloc]init] timeIntervalSinceDate:futureDate] < 0.0) {
    NSLog(@"YES\nDates.\nNow = (%@)  \nfutureDate (%@)", now, futureDate);
} else {
    NSLog(@"NO\nNow = (%@)  \nfutureDate (%@)", now, futureDate);
}

извините за глупый вопрос.

...