zoukankan      html  css  js  c++  java
  • 用nstimer实现倒计时

    用nstimer实现倒计时
    // 
    [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]; 
        } 
        
    }
  • 相关阅读:
    eclipse 使用 maven 无法编译 jsp 文件的问题
    iOS开发-Quartz2D绘制时定时器选择
    iOSUI-事件处理
    iOS开发-数据存储
    iOSUI-UIScrollView属性,方法大全
    iOSUI-UITableView属性,方法大全
    iOS网络-NSURLSession/AFNetworking发送HTTPS网络请求
    iOS网络-AFNetworking检测网络状态
    iOS网络-AFNetworking序列化
    iOS网络-AFNetworking基本使用,文件下载,上传
  • 原文地址:https://www.cnblogs.com/Ganggang888/p/5253596.html
Copyright © 2011-2022 走看看