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]; 
        } 
        
    }
  • 相关阅读:
    .NET程序员 湖南创世纪网络
    java.lang.NoSuchMethodError:SpringJAR包版本冲突错误解决方法
    事实表和纬度表概述
    SQL Server中char、nchar、varchar、nvarchar的区别
    biztalk 2010 映射
    biztalk 2010 架构
    字符编码简单总结
    浅析组织结构与个人发展的关系
    缓慢渐变维度的处理方式
    SQL server中SET ANSI_PADDING对char、varchar、nvarchar的影响
  • 原文地址:https://www.cnblogs.com/Ganggang888/p/5253596.html
Copyright © 2011-2022 走看看