更改当前日期

时间:2011-04-19 13:47:59

标签: ios objective-c cocoa-touch nsdate

我正在处理iPhone开发中的日期。我需要从当前日期算起24小时。

7 个答案:

答案 0 :(得分:1)

简单:

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

答案 1 :(得分:1)

您可以使用dateByAddingTimeInterval

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

答案 2 :(得分:0)

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

- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds

答案 3 :(得分:0)

尝试

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

将上次下载日期保存在NSUserDefaults中。当您尝试下载时,只需检查该日期。

类似的东西:

- (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。使用方法的返回值来显示下载指示符或警告,告诉用户他必须等待更多。

答案 6 :(得分:0)

根据您真正想要实现的目标,只需在您的时间间隔内添加86,400(或60 * 60 * 24)可能不是您想要的。例如,如果用户经历了夏令时调整,那么您将在一个小时之后离开,如果它发生在午夜附近,则会关闭一天。更好的方法是向NSCalendar询问结果,该结果考虑了用户的本地时区。

NSDate *start = yourDate;
NSDateComponents *oneDay = [NSDateComponents new];
[oneDay setDay:1];

NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *end = [cal dateByAddingComponents:oneDay toDate:start options:0];