• nstimer实现倒计时


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    //
    [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];
        }
         
    }
  • 相关阅读:
    android高级UI之Draw绘制流程、Paint渲染高级应用
    android高级UI之UI绘制流程(测量布局)
    大数据JavaWeb之MySQL基础----多表&事务&DCL
    大数据JavaWeb之MySQL基础---数据库设计、备份与还原
    大数据JavaWeb之MySQL基础---约束
    大数据JavaWeb之MySQL基础---DDL&DQL
    大数据JavaWeb之MySQL基础---MySQL安装、SQL初识
    软引用示例演示与引用队列的作用分析
    Reference的四种状态转换关系分析
    【转】document.form.action,表单分向提交
  • 原文地址:https://www.cnblogs.com/-ios/p/4669960.html
Copyright © 2020-2023  润新知