2011-12-04 53 views
0

在我的iPhone應用程序中,我希望有一個UILabel,它將倒計時到某個日期。以日/月/年的格式顯示特定日期的倒計時

到目前爲止,我有用戶從UIDatePicker中選擇一個日期,但我無法弄清楚如何實際上邏輯倒數每個單位的日期。它也需要生活,所以你可以看日期的變化,而不是重新加載視圖,並看到從現在到現在的差異。

我想有像這樣的格式(以後可能會改變它,不知道): DD/MM/YYYY

+0

嗯,我設法得到日期差異在幾秒鐘內,然後計算日期,月份和年份等。唯一的麻煩是有夏令時,以及其他一些事情,例如30個或31天在不同的月份,這是hardtop帳戶。我需要在今天的日期和選定的未來日期之間得到準確的區別。 –

回答

3

你會想要一個NSTimer解僱每次你要更新的標籤的時候再您需要使用NSDatetimeIntervalSinceNow方法來獲取日期和現在之間的時間間隔。然後用它來更新標籤。

例如:

- (void)startTimer { 
    ... 
    // Set the date you want to count from 
    self.countdownDate = [NSDate date...]; ///< Get this however you need 

    // Create a timer that fires every second repeatedly and save it in an ivar 
    self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateLabel) userInfo:nil repeats:YES]; 
    ... 
} 

- (void)updateLabel { 
    NSTimeInterval timeInterval = [self.countdownDate timeIntervalSinceNow]; ///< Assuming this is in the future for now. 

    /** 
    * Work out the number of days, months, years, hours, minutes, seconds from timeInterval. 
    */ 

    self.countdownLabel.text = [NSString stringWithFormat:@"%@/%@/%@ %@:%@:%@", days, months, years, hours, minutes, seconds]; 
} 

要獲得的日,月,年,小時,分鐘&秒,你也可以使用NSCalendar特別是components:fromDate:toDate:options:方法的實際數量。看看這個問題的一些更多的討論: Number of days between two NSDates

+0

你突然睜開眼睛。那是其中的一個。但有一件事,一旦我計算出日期的差異,我就可以得到秒數。然後讓我們說,你分60分鐘,然後再分幾小時,然後24分幾天。那又怎麼樣?我可以繼續前進,但每個月都有不同的天數,我怎麼能通過這個? –

+0

不要忘記夏令時的瘋狂。他們每年都在變化!絕對不可能在您的應用程序中編寫所有規則 - 那麼您從長遠來看只是忽略它們,並且在時間接近目標時間時依靠正確的方法來實現它。 – JOM

+0

當然哦,crums。是否沒有準確的方法來檢索現在和所選日期之間的區別?我一直在看NSCalendar,但我不確定它是否會產生預期的結果。 –

相關問題