从cocoachina上demo 获取
[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(11, 2)] intValue]; minute
= [[overdate substringWithRange:NSMakeRange(14, 2)] intValue]; second
= [[overdate substringWithRange:NSMakeRange(17, 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] < 10) { fen
= [NSString stringWithFormat:@"0%d",[d
minute]]; }
NSString
*miao = [NSString stringWithFormat:@"%d",
[d second]]; if([d
second] < 10) { 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]; }
}
本文介绍了如何从CocoaChina上获取NSTimer与日期操作的结合应用实例,包括定时器的配置、日期组件的使用及日期时间格式转换,通过实例演示了如何实现倒计时功能,并在不同场景下进行时间差计算,最终将结果显示为用户可读的时间格式。
195

被折叠的 条评论
为什么被折叠?



