您的位置:首页 > 其它

使用NSTimer实现倒计时

2012-08-07 22:08 369 查看
今天在CocoaChina上面看到有人在问倒计时怎么做,记得以前在看Iphone31天的时候做过一个,今天翻出来运行不了了,原因是我的Iphone SDK升级到3.1了,以前使用的是2.2.1,在2.2.1里面是可以使用NSCalendarDate的,但是在3.1里面不能够使用,怎么办,只好用NSTimer了,最后还是给实现了。代码也比较简单,开始运行viewDidLoad的时候加载 [NSTimer scheduledTimerWithTimeInterval:1.0 target:self
selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];//使用timer定时,每秒触发一次

,然后就是写selector了。

 

- (void)timerFireMethod:(NSTimer*)theTimer

{

 //NSDateFormatter *dateformatter = [[[NSDateFormatter alloc]init] autorelease];//定义NSDateFormatter用来显示格式

 //[dateformatter setDateFormat:@"yyyy MM dd hh mm ss"];//设定格式

 NSCalendar *cal = [NSCalendar currentCalendar];//定义一个NSCalendar对象

 NSDateComponents *shibo = [[NSDateComponents alloc] init];//初始化目标时间(好像是世博会的日期)

 [shibo setYear:2010];

 [shibo setMonth:5];

 [shibo setDay:1];



 [shibo setHour:8];

 [shibo setMinute:0];

 [shibo setSecond:0];

 

 NSDate *todate = [cal dateFromComponents:shibo];//把目标时间装载入date

 [shibo release];

// NSString *ssss = [dateformatter stringFromDate:dd];

// NSLog([NSString stringWithFormat:@"shibo shi:%@",ssss]);

 

 NSDate *today = [NSDate date];//得到当前时间

// NSString *sss = [dateformatter stringFromDate:today];

// NSLog([NSString stringWithFormat:@"xianzai shi:%@",sss]);

 //用来得到具体的时差

 unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;

 NSDateComponents *d = [cal components:unitFlags fromDate:today toDate:todate options:0];

 lab.text = [NSString stringWithFormat:@"%d年%d月%d日%d时%d分%d秒",[d year],[d month], [d day], [d hour], [d minute], [d second]];

}

这样就实现了倒计时的功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: