虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > IOS编程/Objective-C > IOS开发代码分享之用nstimer实现倒计时功能

IOS开发代码分享之用nstimer实现倒计时功能
类别:IOS编程/Objective-C   作者:码皇   来源:互联网   点击:

在制作IOS项目中,我们经常要用到倒计时功能,今天就分享下使用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];
     
     
     
     
    }
     
     
     
     
     
    }

相关热词搜索: IOS开发 代码分享 nstimer 倒计时