2011-02-08 109 views
0

我正在寫一個倒計時器應用程序,如iPhone的時鐘應用程序中的計時器選項卡。現在我無法比較日期,'現在'和'futureDate'。所有的變量都是合成的並且是非原子的並且保持不變。 我現在有這個代碼。在nstimer選擇器內比較日期

- (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]日期。 Now =(2011-02-08 18:46:02 +0000)
futureDate(2011-02-08 18:47:02 +0000) 2011-02-08 16:46:03.451 App [22504:207 ]是的

它永遠給我是「永遠」。 但是,如果您看到可變小時數,則與我的時鐘時間相比,它們在未來是+ 2小時。這是錯誤嗎?

回答

0

對不起,我是否在測試錯誤的日期,比較變量now和futureDate的時間間隔將永遠是一樣的。我在測試中替換了[[NSDate alloc] init]的now變量。現在代碼工作。

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

對於這個愚蠢的問題感到抱歉。