更改当前date

我正在使用iPhone开发中的date。 我需要从当前date起24小时增加date。

你可以使用dateByAddingTimeInterval

NSDate *currentDate = [NSDate date]; NSDate *datePlusOneDay = [currentDate dateByAddingTimeInterval:(60 * 60 * 24)]; //one day 

简单:

 NSDate *tomorrow = [[NSDate date] dateByAddingTimeInterval:86400]; 

你可以添加一个NSTimeInterval。 由于这是一个双倍秒数只需添加24 * 60 * 60:

 - (id)dateByAddingTimeInterval:(NSTimeInterval)seconds 

尝试

 NSDate *twentyFourHoursLater = [[NSDate alloc] initWithTimeIntervalSinceNow:60 * 60 * 24]; 

将下载date保存在NSUserdefaults中,然后检查是否已经过了24小时? 如果不通知用户他/她将不得不等待。

保存NSUserDefaults中的最后一个下载date。 而当你尝试下载只是检查该date。

像这样的东西:

 - (BOOL)downloadDataForecedUpdate:(BOOL)forced { NSDate *lastDownloadDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastDownloadDate"]; if (forced || !lastDownloadDate || [[NSDate date] timeIntervalSinceDate:lastDownloadDate] > 24 * 60 * 60) { // start download [NSURLConnection connectionWithRequest:myDownloadRequest delegate:self]; return YES; } return NO; } - (void)connectionDidFinishLoading:(NSURLConnection *)connection { // process data [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"lastDownloadDate"]; } 

你可以在适当的时候调用[self downloadDataForecedUpdate:NO] 。 在应用程序启动或IBAction。 使用方法的返回值来显示下载指示符或告诉用户他必须等待更多的警报。

根据你真正想要达到的效果,只要在你的时间间隔内加上86,400(或60 * 60 * 24)就可能不是你想要的。 例如,如果用户进行日光节约调整,则如果发生在午夜附近,则将closures一小时,甚至一天。 一个更好的方法是询问NSCalendar的结果,考虑到用户本地时区。

 NSDate *start = yourDate; NSDateComponents *oneDay = [NSDateComponents new]; [oneDay setDay:1]; NSCalendar *cal = [NSCalendar currentCalendar]; NSDate *end = [cal dateByAddingComponents:oneDay toDate:start options:0];