Изменение текущей даты - PullRequest
       1

Изменение текущей даты

0 голосов
/ 19 апреля 2011

Я работаю с датой в разработке моего iPhone.Мне нужно увеличить дату на 24 часа от текущей даты.

Ответы [ 7 ]

1 голос
/ 19 апреля 2011

Вы можете использовать dateByAddingTimeInterval

NSDate *currentDate = [NSDate date];
NSDate *datePlusOneDay = [currentDate dateByAddingTimeInterval:(60 * 60 * 24)]; //one day
1 голос
/ 19 апреля 2011

Simple:

NSDate *tomorrow = [[NSDate date] dateByAddingTimeInterval:86400];
0 голосов
/ 17 января 2013

В зависимости от того, что вы действительно пытаетесь достичь, просто добавление 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];
0 голосов
/ 19 апреля 2011

сохранить дату последней загрузки в 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. Используйте возвращаемое значение метода, чтобы отобразить индикатор загрузки или предупреждение, сообщающее пользователю, что он должен ждать больше.

0 голосов
/ 19 апреля 2011

Сохранить дату загрузки в NSUserdefaults, а затем проверить, прошло ли 24 часа? Если нет, сообщите пользователю, что ему придется подождать.

0 голосов
/ 19 апреля 2011

Попробуйте

NSDate *twentyFourHoursLater = [[NSDate alloc] initWithTimeIntervalSinceNow:60 * 60 * 24];
0 голосов
/ 19 апреля 2011

вы можете добавить NSTimeInterval.Поскольку это удвоение в секундах, просто добавьте 24 * 60 * 60:

- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds
...