Как определить, когда два NSDates разнесены на 1 неделю? - PullRequest
1 голос
/ 07 марта 2011

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

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

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

Ответы [ 3 ]

4 голосов
/ 07 марта 2011
3 голосов
/ 07 марта 2011

Вы можете сортировать свои записи по дате (например, в порядке возрастания). После этого вы можете рассчитать разницу в днях между всеми последующими датами, в основном 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;
0 голосов
/ 07 марта 2011

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

...