`

NSTimer倒计时

    博客分类:
  • ios
 
阅读更多
//
[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];
    }
   
}
分享到:
评论

相关推荐

    简单的时间选择器Nstimer

    `NSTimer`是苹果iOS和macOS开发中的一个核心组件,用于执行周期性的任务或者在特定时间点触发某个动作。...实际项目中,你可以根据需求调整和扩展这个工具,例如增加时间设置、倒计时功能、或与其他系统服务集成。

    NSTimer实现的小计时器

    这在实现倒计时、动画效果或者周期性任务时非常有用。`NSTimer`不是线程安全的,通常在主线程中创建和触发。 二、创建NSTimer的类方法 1. `+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval ...

    IOS开发代码分享之用nstimer实现倒计时功能

    以下是一个基于`NSTimer`实现倒计时功能的代码示例,以及相关的知识点解析: 首先,我们创建一个`NSTimer`实例,设置其时间间隔为1秒,目标为当前类(self),选择器方法为`timerFireMethod:`,并设置为重复执行: ...

    ios完美倒计时

    1. **初始化定时器**:首先,我们需要创建一个`NSTimer`实例,指定间隔时间(即倒计时秒数)和一个selector,这个selector会在每次倒计时触发时执行。例如: ```objective-c NSTimeInterval interval = 60; // 60...

    iOS 倒计时按钮

    3. **倒计时方法**:创建一个定时器(`NSTimer`)来更新剩余时间,并根据时间变化更新按钮的标题或者背景色。 4. **暂停与重置**:提供方法来暂停或重置倒计时,以便在用户操作或其他事件发生时调整按钮状态。 5. ...

    到计时器---可以手动输入一个时间,开始倒计时

    在iOS开发中,倒计时(Countdown Timer)是一种常见的功能,它被广泛应用于各种应用场景,比如考试倒计时、烹饪计时、闹钟等。本项目“到计时器”是一个用户可以自定义时间的倒计时工具,其核心在于能够接收用户输入...

    iOS倒计时-自己写的倒计时

    在`LYDaoJiShi.m`的实现中,开发者可能会使用`CADisplayLink`或`NSTimer`来实现每隔一定时间(如1秒)调用`updateDigitLabels`方法,动态更新倒计时。同时,为了防止倒计时过程中用户界面旋转导致布局变化,还需要...

    tableViewCell上的倒计时

    本篇将详细讲解如何使用`NSTimer`来实现这样的倒计时效果。 首先,我们需要理解`NSTimer`的基本用法。`NSTimer`是Apple提供的一个定时器类,它可以按照指定的时间间隔重复执行某项任务。创建一个`NSTimer`通常包括...

    iOS 倒计时功能

    在iOS开发中,倒计时功能是一个非常常见且实用的特性,它被广泛应用于各种场景,如电商的限时抢购、直播预告等。本文将详细阐述如何在iOS平台上实现倒计时功能,以及相关的编程技巧。 首先,我们需要了解的是iOS...

    基于label的倒计时框架

    该框架的核心思想是利用UILabel来显示倒计时的文字内容,通过定时器(NSTimer)来控制时间的流逝,并更新Label上的文字。由于UILabel本身具备良好的可定制性,可以方便地设置字体、颜色、对齐方式等样式,因此用它来...

    ios-验证码倒计时.zip

    这个“ios-验证码倒计时.zip”文件中的代码可能实现了一个基于GCD(Grand Central Dispatch)的倒计时器,与传统的NSTimer相比,GCD在处理定时器任务上具有更高的精确性和线程安全性。 1. **GCD基础** GCD是苹果...

    ios-倒计时封装.zip

    在倒计时场景中,GCD可以帮助避免NSTimer因主线程阻塞而出现的问题,确保倒计时的准确无误。 3. **Block/Closure**:资源中的"一句代码"很可能是指使用Block或Closure来设置倒计时的开始和结束回调。Block是iOS中的...

    欢迎界面倒计时

    在IT行业中,欢迎界面倒计时是一种常见的用户体验设计,它常用于应用程序或网站的启动页面,为用户提供一种视觉上的引导,增加用户对产品的期待感。倒计时功能可以帮助管理用户的等待时间感知,尤其是在加载复杂内容...

    ios-tableView定义倒计时显示.zip

    3. **倒计时实现**: 倒计时通常通过NSTimer实现。在本例中,我们可以创建一个NSTimer对象,设置其周期(比如1秒),并关联一个更新倒计时显示的回调方法。在回调中,我们减少计时器的剩余时间,并更新cell的UILabel...

    ios-倒计时按钮,回调,方法.zip

    这个子类需要包含一个UILabel来显示倒计时的数字,以及一个内部的NSTimer对象用于更新倒计时。 1. **UILabel**:倒计时按钮的核心是显示倒计时数值的UILabel。你可以通过设置其text属性来显示当前剩余的时间,例如...

    iOS整合两种动画倒计时的demo

    在iOS中,我们可以使用NSTimer类来定期执行任务,比如每秒更新一次倒计时的数值。创建一个NSTimer实例,设置好时间间隔(如1秒),并关联一个目标方法(这个方法会处理倒计时逻辑,如减少秒数)。当倒计时结束时,...

    可以倒计时的alertview

    5. 使用`CADisplayLink`或者`NSTimer`来更新倒计时,根据需要更新`CountdownView`的内容。 6. 当倒计时结束,调用`dismiss(animated:completion:)`方法关闭alert。 在`juxuechen-AlertPickerView-e589779`这个项目...

    ios 圆环倒计时的demo

    其次,倒计时逻辑通常涉及到`NSTimer`或`DispatchSourceTimer`。在这个demo中,开发者可能使用了`NSTimer`来定期更新圆环的进度。`NSTimer`是一个基于run loop的定时器,可以在指定的间隔内重复执行某个任务。例如,...

    ios-倒计时按钮.zip

    首先,为了实现倒计时功能,EBCountDownButton控件内部会使用NSTimer对象,该对象按照指定的时间间隔触发事件。开发者可以通过设置`countDownTime`属性来设定倒计时的总秒数,然后调用`startCountDown`方法启动倒...

    解决ios下后台运行与锁屏时倒计时停止问题

    这对于依赖持续运行的JavaScript代码,如倒计时功能,可能会造成困扰。标题"解决ios下后台运行与锁屏时倒计时停止问题"正是针对这一常见挑战,而描述中的内容则提供了解决方案的方向。 当iOS应用被切换到后台,...

Global site tag (gtag.js) - Google Analytics