今天做应用 用到了不少关于时间处理方面的东西,总结一下,希望大家指正!

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

首先定义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界面时倒计时不开始计时了!是不是要设置什么 求帮助!



 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值