美文网首页
iOS时间戳对比倒计时

iOS时间戳对比倒计时

作者: 你的小福蝶 | 来源:发表于2019-03-05 14:47 被阅读0次
需求:

Cell中倒计时显示,到期刷新接口,超时数据消失。后端提供订单生成时间戳createdTime。

计算:

到期时间 = 订单生成时间+后端订单预留时间
剩余时间 = 到期时间 - 现在时间
剩余时间的年,月,日,时,分,秒都小于等于0时即为超时失效。

工具使用:CountDown
//导入文件,链接文章末尾
#import "CountDown.h"
@property (nonatomic , strong) CountDown *countDown;

    //轮询初始化
    self.countDown = [[CountDown alloc] init];
    __weak __typeof(self) weakSelf= self;
    [self.countDown countDownWithPER_SECBlock:^{
        [weakSelf updateTimeInVisibleCells];
    }];

//轮询并对Cell进行赋值
- (void)updateTimeInVisibleCells{
    NSArray  *cells = self.tableView.visibleCells; //取出屏幕可见ceLl
    for (OpenCardWriteCell *cell in cells) {
        OpenCardFailedModel *model = self.dataArray[cell.tag];
        [cell.readBtn setTitle:[self getNowTimeWithString:validateString(model.createdTime)] forState:UIControlStateNormal];
    }
}

//计算时间差
- (NSString *)getNowTimeWithString:(NSString *)aTimeString{
    
    NSDate *nowDate = [NSDate dateWithTimeIntervalSinceNow:0];//获取当前时间0秒后的时间
    //30分钟后
    NSString *startStr = validateString(aTimeString);
    NSTimeInterval startTime = [startStr doubleValue]*0.001+1800;
    NSDate *detaildate = [NSDate dateWithTimeIntervalSince1970:startTime];
    //对比得到差值
    NSTimeInterval timeInterval = [detaildate timeIntervalSinceDate:nowDate];
    
    int days = (int)(timeInterval/(3600*24));
    int hours = (int)((timeInterval-days*24*3600)/3600);
    int minutes = (int)(timeInterval-days*24*3600-hours*3600)/60;
    int seconds = timeInterval-days*24*3600-hours*3600-minutes*60;
    
    //以下按自己需要使用
    NSString *dayStr;NSString *hoursStr;NSString *minutesStr;NSString *secondsStr;
    dayStr = [NSString stringWithFormat:@"%d",days];
    hoursStr = [NSString stringWithFormat:@"%d",hours];
    if(minutes<10)
        minutesStr = [NSString stringWithFormat:@"0%d",minutes];
    else
        minutesStr = [NSString stringWithFormat:@"%d",minutes];
    if(seconds < 10)
        secondsStr = [NSString stringWithFormat:@"0%d", seconds];
    else
        secondsStr = [NSString stringWithFormat:@"%d",seconds];
    if (hours<=0&&minutes<=0&&seconds<=0) {
        [self queryOrderDataMethod];
        return @"已超时";
    }
    
    if (days) {
        return [NSString stringWithFormat:@"剩余时间  %@天%@:%@:%@", dayStr,hoursStr, minutesStr,secondsStr];
    } else if(hours){
        return [NSString stringWithFormat:@"剩余时间  %@:%@:%@", hoursStr,minutesStr,secondsStr];
    }else
        return [NSString stringWithFormat:@"剩余时间  %@:%@", minutesStr,secondsStr];
}

//销毁
- (void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
    [_countDown destoryTimer];
}

感谢文明大佬的技术支持:CountDown

参考文章:
https://blog.csdn.net/minjing_lin/article/details/51783163
https://blog.csdn.net/m372897500/article/details/46443699
https://blog.csdn.net/bitcser/article/details/52240587

相关文章

  • iOS时间戳对比倒计时

    需求: Cell中倒计时显示,到期刷新接口,超时数据消失。后端提供订单生成时间戳createdTime。 计算: ...

  • NSDate日常使用方法总结

    (注:持续更新)1、时间转时间戳: 2、时间戳转时间: 3、倒计时

  • iOS 获取时间字符串与时间戳

    获取当前时间 获取当前时间戳 时间戳转时间 字符串转时间戳 注意:iOS 返回的时间戳单位是秒。

  • iOS 时间戳

    引言 iOS开发过程中会遇到很多时间转的问题。例如:当服务器端给我们一个时间戳的时候,我们需要把它转化成具体的时间...

  • iOS 时间戳

    背景: 在App的开发中,会遇到一些要计算时间差的问题,比如:在友盟统计的列子里面,要统计一个页面从创建到销毁的时...

  • iOS 时间戳

    NSDate 1.NSDate对象用来表示一个具体的时间点; 2.NSDate是一个类簇。我们所使用的NSDate...

  • iOS 时间 时间戳

    时间在线转化:http://tool.chinaz.com/Tools/unixtime.aspx 1.日期格式转...

  • iOS返回时间戳和当前时间对比,得出时分

    代码如下: 打印如下: 03:56 分钟+1即是03:57

  • NSDate 时间比较的时区问题

    判断两个时间是否是同一天,是无法用时间戳对比的,两个时间戳间隔在24小时之内不能代表是同一天。 用时间戳对比,也是...

  • js倒计时天时分秒

    倒计时实现 1 获取当前的时间戳2 获取截止日期的时间戳3 截止日期时间戳减去当前日期时间戳转换成天时分秒 通...

网友评论

      本文标题:iOS时间戳对比倒计时

      本文链接:https://www.haomeiwen.com/subject/qngoyqtx.html