今天在CocoaChina上面看到有人在問倒計時怎麼做,記得以前在看Iphone31天的時候做過一個,今天翻出來運行不了了,原因是我的IphoneSDK升級到3.1了,以前使用的是2.2.1,在2.2.1裡面是可以使用NSCalendarDate的,但是在3.1裡面不能夠使用,怎麼辦,只好用NSTimer了,最後還是給實現了。代碼也比較簡單,開始運行viewDidLoad的時候載入 [NSTimerscheduledTimerWithTimeInterval:1.0
target:selfselector:@selector(timerFireMethod:) userInfo:nilrepeats:YES];//使用timer定時,每秒觸發一次
,然後就是寫selector了。
-(void)timerFireMethod:(NSTimer*)theTimer
{
//NSDateFormatter *dateformatter =[[[NSDateFormatter alloc]init]autorelease];//定義NSDateFormatter用來顯示格式
//[dateformatter setDateFormat:@"yyyy MM dd hh mmss"];//設定格式
NSCalendar *cal = [NSCalendarcurrentCalendar];//定義一個NSCalendar對象
NSDateComponents *shibo = [[NSDateComponentsalloc] init];//初始化目標時間(好像是世博會的日期)
[shibo setYear:2010];
[shibo setMonth:5];
[shibo setDay:1];
[shibo setHour:8];
[shibo setMinute:0];
[shibo setSecond:0];
NSDate *todate = [caldateFromComponents:shibo];//把目標時間裝載入date
[shibo release];
// NSString *ssss = [dateformatterstringFromDate:dd];
// NSLog([NSString stringWithFormat:@"shiboshi:%@",ssss]);
NSDate *today = [NSDate date];//得到目前時間
// NSString *sss = [dateformatterstringFromDate:today];
// NSLog([NSString stringWithFormat:@"xianzaishi:%@",sss]);
//用來得到具體的時差
unsigned int unitFlags = NSYearCalendarUnit |NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit |NSMinuteCalendarUnit
| NSSecondCalendarUnit;
NSDateComponents *d = [cal components:unitFlagsfromDate:today toDate:todate options:0];
lab.text = [NSStringstringWithFormat:@"%d年%d月%d日%d時%d分%d秒",[d year],[d month], [d day],[d hour], [d minute], [d
second]];
}
這樣就實現了倒計時的功能。