2011-12-04 48 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,但我不确定它是否会产生预期的结果。 –

相关问题