​​// ​​
​​[​​​​NSTimer​​​ ​​scheduledTimerWithTimeInterval​​​​:​​​​1​​​​.0​​​ ​​target​​​​:​​​​self​​​ ​​selector​​​​:​​​​@selector​​​​(timerFireMethod:)​​​ ​​userInfo​​​​:nil​​​ ​​repeats​​​​:​​​​YES​​​​]; ​​

​​// ​​
​​- (​​​​void​​​​)timerFireMethod:(​​​​NSTimer​​​ ​​*)theTimer ​​
​​{ ​​
​​BOOL​​​ ​​timeStart = ​​​​YES​​​​; ​​
​​NSCalendar​​​ ​​*cal = [​​​​NSCalendar​​​ ​​currentCalendar​​​​];​​​​//定义一个NSCalendar对象 ​​
​​NSDateComponents​​​ ​​*endTime = [[​​​​NSDateComponents​​​ ​​alloc​​​​]​​​ ​​init​​​​]; ​​​​//初始化目标时间... ​​
​​NSDate​​​ ​​*today = [​​​​NSDate​​​ ​​date​​​​]; ​​​​//得到当前时间 ​​

​​NSDateFormatter​​​ ​​*dateFormatter = [[​​​​NSDateFormatter​​​ ​​alloc​​​​]​​​ ​​init​​​​]; ​​
​​[dateFormatter​​​ ​​setDateFormat​​​​:​​​​@"yyyy-MM-dd HH:mm:ss"​​​​]; ​​
​​NSDate​​​ ​​*dateString = [dateFormatter​​​ ​​dateFromString​​​​:todate]; ​​
​​NSString​​​ ​​*overdate = [dateFormatter​​​ ​​stringFromDate​​​​:dateString]; ​​
​​// NSLog(@"overdate=%@",overdate); ​​
​​static​​​ ​​int​​​ ​​year; ​​
​​static​​​ ​​int​​​ ​​month; ​​
​​static​​​ ​​int​​​ ​​day; ​​
​​static​​​ ​​int​​​ ​​hour; ​​
​​static​​​ ​​int​​​ ​​minute; ​​
​​static​​​ ​​int​​​ ​​second; ​​
​​if​​​​(timeStart) {​​​​//从NSDate中取出年月日,时分秒,但是只能取一次 ​​
​​year = [[overdate​​​ ​​substringWithRange​​​​:NSMakeRange(​​​​0​​​​, ​​​​4​​​​)]​​​ ​​intValue​​​​]; ​​
​​month = [[overdate​​​ ​​substringWithRange​​​​:NSMakeRange(​​​​5​​​​, ​​​​2​​​​)]​​​ ​​intValue​​​​]; ​​
​​day = [[overdate​​​ ​​substringWithRange​​​​:NSMakeRange(​​​​8​​​​, ​​​​2​​​​)]​​​ ​​intValue​​​​]; ​​
​​hour = [[overdate​​​ ​​substringWithRange​​​​:NSMakeRange(​​​​1​​​​1​​​​, ​​​​2​​​​)]​​​ ​​intValue​​​​]; ​​
​​minute = [[overdate​​​ ​​substringWithRange​​​​:NSMakeRange(​​​​1​​​​4​​​​, ​​​​2​​​​)]​​​ ​​intValue​​​​]; ​​
​​second = [[overdate​​​ ​​substringWithRange​​​​:NSMakeRange(​​​​1​​​​7​​​​, ​​​​2​​​​)]​​​ ​​intValue​​​​]; ​​
​​timeStart= ​​​​NO​​​​; ​​
​​} ​​

​​[endTime​​​ ​​setYear​​​​:year]; ​​
​​[endTime​​​ ​​setMonth​​​​:month]; ​​
​​[endTime​​​ ​​setDay​​​​:day]; ​​
​​[endTime​​​ ​​setHour​​​​:hour]; ​​
​​[endTime​​​ ​​setMinute​​​​:minute]; ​​
​​[endTime​​​ ​​setSecond​​​​:second]; ​​
​​NSDate​​​ ​​*overTime = [cal​​​ ​​dateFromComponents​​​​:endTime]; ​​​​//把目标时间装载入date ​​
​​//用来得到具体的时差,是为了统一成北京时间 ​​
​​unsigned ​​​​int​​​ ​​unitFlags = NSYearCalendarUnit| NSMonthCalendarUnit| NSDayCalendarUnit| NSHourCalendarUnit| NSMinuteCalendarUnit| ​​​​NSSecondCalendarUnit​​​​; ​​
​​NSDateComponents​​​ ​​*d = [cal​​​ ​​components​​​​:unitFlags​​​ ​​fromDate​​​​:today​​​ ​​toDate​​​​:overTime​​​ ​​options​​​​:​​​​0​​​​]; ​​
​​NSString​​​ ​​*t = [​​​​NSString​​​ ​​stringWithFormat​​​​:​​​​@"%d"​​​​, [d​​​ ​​day​​​​]]; ​​
​​NSString​​​ ​​*h = [​​​​NSString​​​ ​​stringWithFormat​​​​:​​​​@"%d"​​​​, [d​​​ ​​hour​​​​]]; ​​
​​NSString​​​ ​​*fen = [​​​​NSString​​​ ​​stringWithFormat​​​​:​​​​@"%d"​​​​, [d​​​ ​​minute​​​​]]; ​​
​​if​​​​([d​​​ ​​minute​​​​] < ​​​​1​​​​0​​​​) { ​​
​​fen = [​​​​NSString​​​ ​​stringWithFormat​​​​:​​​​@"0%d"​​​​,[d​​​ ​​minute​​​​]]; ​​
​​} ​​
​​NSString​​​ ​​*miao = [​​​​NSString​​​ ​​stringWithFormat​​​​:​​​​@"%d"​​​​, [d​​​ ​​second​​​​]]; ​​
​​if​​​​([d​​​ ​​second​​​​] < ​​​​1​​​​0​​​​) { ​​
​​miao = [​​​​NSString​​​ ​​stringWithFormat​​​​:​​​​@"0%d"​​​​,[d​​​ ​​second​​​​]]; ​​
​​} ​​
​​// NSLog(@"===%@天 %@:%@:%@",t,h,fen,miao); ​​
​​[_longtime​​​ ​​setText​​​​:[​​​​NSString​​​ ​​stringWithFormat​​​​:​​​​@"%@天 %@:%@:%@"​​​​,t,h,fen,miao]]; ​​
​​if​​​​([d​​​ ​​second​​​​] > ​​​​0​​​​) { ​​
​​//计时尚未结束,do_something ​​
​​// [_longtime setText:[NSString stringWithFormat:@"%@:%@:%@",d,fen,miao]]; ​​
​​} ​​​​else​​​ ​​if​​​​([d​​​ ​​second​​​​] == ​​​​0​​​​) { ​​
​​//计时结束 do_something ​​

​​} ​​​​else​​​​{ ​​
​​//计时器失效​​
​​[theTimer​​​ ​​invalidate​​​​]; ​​
​​} ​​

​​}​​