在我的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帐户。我需要在今天的日期和选定的未来日期之间得到准确的区别。 –