Я нахожу даты очень не интуитивно понятными и запутанными, так что вот так.
У меня есть массив событий с датами, и если дата какого-либо одного события больше часа назад, я хочу удалить его.
Код, который я использую:
NSDate *now = [NSDate date];
Events *event = mutableEventsArray[i];
if (event.date!=nil) {
NSTimeInterval sinceNow = [event.date timeIntervalSinceNow];
NSLog(@"sinceNow%@",sinceNow);
NSTimeInterval hourInterval = 3600;
if (sinceNow<hourInterval) {
[mutableEventsArray removeObjectAtIndex:i];
}
}
Проблема в том, что он удаляет события, которые в прошлом были менее часа.
В одном из примеров, который я только что запустил, запись now
в консоли показывает:
Mon May 7 11:52:31 2018
Запись события.дата показывает: Mon May 7 11:35:42 2018
Разница составляет 17 минут или около 1020 секунд, что намного меньше часа.
Однако, когда я записываю интервал времени, начиная с консоли, я получаю отрицательное число: sinceNow-97005.383634. Это число больше 3600, не говоря уже о 1020. Так что что-то не так с расчетом NSTimeInterval sinceNow = [event.date timeIntervalSinceNow];
Я прочитал , что при использовании NSTimeInterval
не учитывается летнее время и високосные годы, но я не понимаю, как это применимо здесь.
Буду признателен за любые предложения по этому вопросу.