как определить, когда две NSDates разнятся на 1 неделю?

Я - мое приложение, у меня есть NSMutableArray, и каждая запись имеет NSMutableDictionary с несколькими парами ключ-значение. Одна из этих пар содержит дату записи. Для одной из функций моего приложения мне нужно определить, какие записи отличаются друг от друга ровно на 1 неделю (т.е. с воскресенья на воскресенье) и суммировать данные из одной из пар ключ-значение для каждого дня этой недели.

Как мне это сделать?

Примечание. Под словом «воскресенье-воскресенье» я подразумеваю просто воскресенье в целом и не говорю точно с воскресенья в 9 вечера до воскресенья в 9 вечера.


person Christian Gossain    schedule 07.03.2011    source источник
comment
С воскресенья по субботу разница ровно неделя. Это шесть дней с небольшим.   -  person FreeAsInBeer    schedule 07.03.2011
comment
Пожалуйста, отмечайте не только платформу.   -  person    schedule 07.03.2011


Ответы (3)



Вы можете сортировать записи по дате (например, в порядке возрастания). После этого вы можете рассчитать разницу в днях между всеми последующими датами, в основном diff[n] = dayDiff(dates[n], dates[n-1]). Поэтому для каждого dates[n] вы можете найти дату через 7 дней довольно быстро - просто суммируйте diffs с n, пока не достигнете конца массива (=> такой даты нет) ИЛИ сумма равна 7 (=> вы ее нашли) ИЛИ сумма больше 7 (=> такой даты нет).

Не пытайтесь использовать миллисекунды или что-то в этом роде, чтобы получить разницу в днях. Даты намного больше, чем миллисекунды от какой-то точки отсчета. Используйте для этого NSCalendar

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *cs = [calendar components:NSDayCalendarUnit 
                                   fromDate:date1
                                     toDate:date2
                                    options:0];
NSInteger diffInDays = cs.days;
person hoha    schedule 07.03.2011

Посмотрите на использование NSDateComponents. Вы можете преобразовать обе даты A и B только в их дневные компоненты, а затем проверить разницу в 7.

person occulus    schedule 07.03.2011