iOS 计算两个时间段的差值

97 篇文章 0 订阅
79 篇文章 2 订阅

在很多时候,我们要用到计算两个时间段之间的差值,最长见到的就是登录,当然现在有的 APP已经登陆一次就永久化登录,但是还是有APP存在七天不登录或者一个月不登录就重新登录的情况,这个时候就需要我们去判断是否超过期限。废话不多说上代码。

方法一

#pragma mark 判断登录是否过期



-(BOOL)judgeOrderTimer{
    userdefault = NSUserDefault;
    if ([userdefault objectForKey:@"LoginTime"]) {//存在登录时间
        //日期格式
        NSDateFormatter *myFormatter = [[NSDateFormatter alloc]init];
        [myFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        //登录时间字符串
        NSString *orderedTime = [userdefault valueForKey:@"LoginTime"];
        //登录时间1
        NSDate *orderedDate = [myFormatter dateFromString:orderedTime];
        NSTimeZone *zone1 = [NSTimeZone systemTimeZone];
        NSInteger interval1 = [zone1 secondsFromGMTForDate:orderedDate];
        NSDate *localDate1 = [orderedDate dateByAddingTimeInterval:interval1];
        //当前时间2
        NSDate *currentDate = [NSDate date];
        NSTimeZone *zone2 = [NSTimeZone systemTimeZone];
        NSInteger interval2 = [zone2 secondsFromGMTForDate:currentDate];
        NSDate *localDate2 = [currentDate dateByAddingTimeInterval:interval2];
        // 时间2与时间1之间的时间差(秒)
        double intervalTime = [localDate2 timeIntervalSinceReferenceDate] - [localDate1 timeIntervalSinceReferenceDate];
        int iTime = (int)intervalTime;
        if (iTime>=900(你想要的时间,(7天或者一个月),单位.秒)) {//过期
            return YES;
        }else{
            return NO;//未过期
        };
    }else{//不存在登录时间
        return NO;
    }
}
方法二
#pragma mark 获取本机当前时间,与登陆时间进行对比,>7天重新登录
-(BOOL)eventComparison{
    if ([userdefault objectForKey:@"LandingTime"]) {//存在登录时间
  //当前时间2
        NSDateFormatter *myFormatter = [[NSDateFormatter alloc]init];
        NSDate *myDate = [NSDate date];
        [myFormatter setDateFormat:@"yyyy年MM月dd日hh:mm"];
        NSCalendar *cal = [NSCalendar currentCalendar];
        unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
 //做差值
        NSDateComponents *d = [cal components:unitFlags fromDate:[userdefault objectForKey:@"LandingTime"] toDate:myDate options:0];
        long sec = [d hour]*3600+[d minute]*60+[d second];
        if (sec>=604800) { //过期
             return NO;
        }else{//不存在登录时间
             return NO;
        }
    }else{//不存在登录时间
        return NO;
    }
}
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
iOS工程中引入了两个不同的静态库(LibA和LibB),这两个库中存在相同的函数名称时,可能会导致编译错误或运行时冲突。因为在链接(Link)阶段,编译器无法判断该调用哪个库中的函数。 解决这个问题的方法有以下几种: 1. 改变函数名称:将其中一个库中的函数名称修改为不同的名称,例如在LibA中将函数名修改为A_Function,这样可以避免冲突。 2. 使用命名空间(Namespace):在两个库中给函数加上特定的命名空间,例如在LibA中使用namespace A {}命名空间来包裹函数,LibB中使用namespace B {}命名空间来包裹函数,这样就能区分开两个库中的函数。 3. 动态加载(Dynamic loading):如果在运行时能够确定使用哪个库,可以使用动态加载函数。通过使用dlopen()和dlsym()等动态链接库操作函数,可以在运行时决定加载哪个库,并调用对应的函数。 4. 修改链接顺序:在工程配置中,将使用的静态库的链接顺序调整为优先链接需要的函数的库,并排除其它库的链接。这样可以确保在链接时,只会链接到指定的库中的函数。 需要注意的是,以上解决方式都需要在工程配置中进行修改,并且在引用静态库时要明确调用的是哪个库中的函数,避免出现混淆和冲突。最好的解决方法是在引用静态库前,仔细查看库的文档和示例,了解库的使用方式和避免冲突的最佳实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王 哪跑!!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值