首先定义NSTimer
NSTimer *timer=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];
另外就是写 - (void)timerFireMethod:(NSTimer*)theTimer这个方法,在这个方法中我们会用到 当前时间 和目标时间
(1)首先定义一个对象NSCalendar *cal = [NSCalendar currentCalendar];//定义一个NSCalendar对象设置当前时间用这个设置 NSDate *today = [NSDate date]; 但在应用中要考虑到服务器的时间差 这点不要忘记 ,
(2)获取目标时间 目标时间必须为NSDate形式 在此呢 目标时间基本上又以下几种格式 (a)后台返回的时间如这种markTiem=@"2019-03-06 17:27:00";这种需要转换一个使用以下方法转换 这个地方要考虑到不同地区的时间差问题
NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSDate* date = [formatter dateFromString:markTiem];
NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
[formatter setTimeZone:timeZone];
(b)时间戳转为时间也可以用以上同样的方法
(3)以上得到了 目标时间和当前时间 下面获取具体的时间差用以下方法
//用来得到具体的时差
unsigned int unitFlags =NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit| NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *comps = [cal components:unitFlags fromDate:today toDate:date options:0];
NSLog(@"%d年%d月%d日%d时%d分%d秒",[comps year], [comps month], [comps day ] ,[comps hour], [comps minute], [comps second]);
(4)停止倒计时 使用这个[theTimer invalidate];//停止倒计时
在实现倒计时的功能是遇到以下问题 希望得到帮助 问题如下
我在A界面 设置了5s倒计时返回B界面的功能,在A界面上有个按钮,点击按钮可以调到B界面 界面跳转使用的是push 。问题是当倒计时没有结束的时候我点击按钮跑到B界面 点击B界面的返回回到A界面时倒计时不开始计时了!是不是要设置什么 求帮助!

本文介绍如何使用NSTimer实现iOS应用中的倒计时功能,并详细解释了获取当前时间、目标时间的方法及时间差的计算过程。此外,还讨论了一个具体的倒计时问题及其可能的解决方案。

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



