超过指定时间后数据无效

有时候我们可能会从服务端获取一些信息,但是这些信息是有时间限制的,超过指定时间我们需要把这些数据设为无效或者直接删除。

下面是以 NSDate 来实现的


- (IBAction)ButtonMethod:(id)sender
{

// 模拟有效时间的开始

   NSDate *dateNow=[NSDate date];
    NSDateFormatter *dateFormmatter=[[NSDateFormatter alloc]init];
    [dateFormmatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *dateStr=[dateFormmatter stringFromDate:dateNow];
    [dateStr writeToFile:[self timePath] atomically:YES encoding:NSUTF8StringEncoding error:nil];
    
}

- (IBAction)ButtonMethod2:(id)sender
{

//模拟是否可以在有效时间内进行操作

    NSDate *dateNow=[NSDate date];
    NSDateFormatter *dateFormmatter=[[NSDateFormatter alloc]init];
    [dateFormmatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    
    NSString *dateStrNow=[dateFormmatter stringFromDate:dateNow];
    NSString *dateStrPre=[NSString stringWithContentsOfFile:[self timePath] encoding:NSUTF8StringEncoding error:nil];

    if ([self convertDateString:dateStrNow] -[self convertDateString:dateStrPre]  >=60)
    {
        NSLog(@"more than 60 seconds");

//我们可以删除数据,或者提示用户

    }
    else
    {
        NSLog(@"less than 60 seconds");

//进行操作

    }
}

-(long) convertDateString:(NSString *)aString
{
    //格式 yyyy-MM-dd HH:mm:ss,当然你也可以改变它的格式
    NSArray *dateArray=[aString componentsSeparatedByString:@" "];
    NSString *dayStr=[dateArray objectAtIndex:1];
    NSArray *dayArray=[dayStr componentsSeparatedByString:@":"];
    long totalSeconds=0;
    totalSeconds+=[[dayArray objectAtIndex:0] intValue] *60*60;
    totalSeconds+=[[dayArray objectAtIndex:1] intValue] *60;
    totalSeconds+=[[dayArray objectAtIndex:2] intValue] ;
    return totalSeconds;
}


你也可以用一个NSTimer 来测试是否超过有效时间。


你可能感兴趣的:(ios)