在我的iPhone應用程序中,我希望有一個UILabel
,它將倒計時到某個日期。以日/月/年的格式顯示特定日期的倒計時
到目前爲止,我有用戶從UIDatePicker
中選擇一個日期,但我無法弄清楚如何實際上邏輯倒數每個單位的日期。它也需要生活,所以你可以看日期的變化,而不是重新加載視圖,並看到從現在到現在的差異。
我想有像這樣的格式(以後可能會改變它,不知道): DD/MM/YYYY
在我的iPhone應用程序中,我希望有一個UILabel
,它將倒計時到某個日期。以日/月/年的格式顯示特定日期的倒計時
到目前爲止,我有用戶從UIDatePicker
中選擇一個日期,但我無法弄清楚如何實際上邏輯倒數每個單位的日期。它也需要生活,所以你可以看日期的變化,而不是重新加載視圖,並看到從現在到現在的差異。
我想有像這樣的格式(以後可能會改變它,不知道): DD/MM/YYYY
你會想要一個NSTimer
解僱每次你要更新的標籤的時候再您需要使用NSDate
的timeIntervalSinceNow
方法來獲取日期和現在之間的時間間隔。然後用它來更新標籤。
例如:
- (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
你突然睜開眼睛。那是其中的一個。但有一件事,一旦我計算出日期的差異,我就可以得到秒數。然後讓我們說,你分60分鐘,然後再分幾小時,然後24分幾天。那又怎麼樣?我可以繼續前進,但每個月都有不同的天數,我怎麼能通過這個? –
不要忘記夏令時的瘋狂。他們每年都在變化!絕對不可能在您的應用程序中編寫所有規則 - 那麼您從長遠來看只是忽略它們,並且在時間接近目標時間時依靠正確的方法來實現它。 – JOM
當然哦,crums。是否沒有準確的方法來檢索現在和所選日期之間的區別?我一直在看NSCalendar,但我不確定它是否會產生預期的結果。 –
嗯,我設法得到日期差異在幾秒鐘內,然後計算日期,月份和年份等。唯一的麻煩是有夏令時,以及其他一些事情,例如30個或31天在不同的月份,這是hardtop帳戶。我需要在今天的日期和選定的未來日期之間得到準確的區別。 –