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]; 
        } 
        
    }
  • 相关阅读:
    WPF游戏摘记地图编辑器(1)
    图片和视频操作核心代码
    WPF游戏摘记地图编辑器(2)
    序言
    Asp.Net 请求处理机制
    C#正则表达式
    ActiveX控件打包成Cab实现浏览器自动下载安装
    ios数据存储
    ARC 学习
    Ray's Learn Cocos2d 笔记(一)
  • 原文地址:https://www.cnblogs.com/Ganggang888/p/5253596.html
Copyright © 2011-2022 走看看