2011-07-28 59 views
3

我有一個標籤,我希望它顯示到期日期還剩多少次。它將繼續倒計時並更新當前時間。到期日期將顯示在像這樣的xml文件中。NSTimer倒計時標籤

<期滿> 20110803 23時59分59秒< /呼氣>

所以這意味着如果當前時間和日期是20110728 23時59分59秒,和到期日期是20110729 23時59分59秒 然後該標籤將顯示您還有1天00h 00m 00s。

所以我要顯示這樣 enter image description here

它將使倒計時和更新當前時間。任何人有任何想法如何解決這個問題?我不知道NStimer如何識別日期格式,如下所示: 20110803 23:59:59

+0

我的回答有幫助嗎? –

回答

3

查找NSDateFormatter。您可以指定格式字符串(-[setDateFormat:]),該格式字符串可讓您從NSDateNSString轉換爲AND。

當轉換回倒計時視圖時,您可能需要使用NSDateComponentsNSCalendar來獲取倒計時標籤所需的部分(而不是NSDateFormatter)。你可以這樣做:

NSDateComponents *countdown = [[NSCalendar currentCalendar] 
    components:(NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) 
     fromDate:[NSDate date] 
     toDate:expiration 
     options:0]; 

這將計算所有爲你的單位不同(相對於設備的當前配置日曆設置)。

您可以通過諸如[countdown day][countdown hour]之類的調用返回組件。

+0

+1我會嘗試一段時間。 – makaron

0

通過使用NSDateFormatter這樣可以很容易地得到日期,以便從字符串中獲得NSDate對象。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyyMMdd' 'HH:mm:ss"]; 
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]]; 
NSDate *date = [dateFormatter dateFromString:your_date_string]; 
0

您可以使用NSDateformatter類將日期從NSString轉換爲NSDate。

NSString *dateString = @"20110803 23:59:59"; 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyyMMdd HH:mm:ss"]; 
NSDate *date = [dateFormat dateFromString:dateStr]; 

現在,爲了倒計時,您使用NSTimer類火每隔一秒,那麼你就可以得到通過簡單地使用timeIntervalSinceDate在當前日期和您的date變量之間秒的差別。

NSTimeInterval distanceBetweenDates = [currentDate timeIntervalSinceDate:yourDate]; 

既然您在秒鐘內有所不同,您可以將其轉換爲您希望顯示的任何格式。

0

我沒有深入研究這個問題,因此對不起,如果我的答案有點不合適。

在這種情況下,我會使用NSDate。使用NSDateFormatter我會將xml的文本數據轉換爲NSDate。當NSTimer的每次打勾正確時,更改NSDate的值。 和位的代碼,「引起NSDateFormatter的符號有時會造成的混亂:

NSString *xmlDateFormat = @"yyyyMMdd HH:mm:ss"; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:xmlDateFormat]; 
    NSDate *yourDate = [dateFormatter dateFromString:timeStringFromXml]; 

這是從XML讀取。當你打勾的時候改變NSDate的值可以看到NSDate的文檔。並且爲了顯示標籤中的值,我將算術計算每個值,並在隨便的NSString幫助下顯示它:

[NSString stringWithFormat:@"%dday %dh %dm %ds", days, hours, minutes, seconds];