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;
    }
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

王 哪跑!!!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值