как да определите кога две NSD-дати са на 1 седмица?

Аз съм моето приложение, имам NSMutableArray и всеки запис има NSMutableDictionary с няколко двойки ключ-стойност. Една от тези двойки съдържа датата на записа. За една от функциите на моето приложение трябва да определя кои записи са точно на 1 седмица един от друг (т.е. от неделя до неделя) и да сумирам данните от една от двойките ключ-стойност за всеки ден от тази седмица.

Как трябва да направя това?

Забележка: Под неделя до неделя имам предвид само неделя като цяло, а не точно неделя в 21:00 до неделя в 21:00.


person Christian Gossain    schedule 07.03.2011    source източник
comment
Разликата от неделя до събота не е точно една седмица. Това са шест дни и малко.   -  person FreeAsInBeer    schedule 07.03.2011
comment
Моля, не маркирайте само платформата.   -  person    schedule 07.03.2011


Отговори (3)


Вижте Брой дни между две NSD-дати

person Dimitry    schedule 07.03.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;
person hoha    schedule 07.03.2011

Разгледайте използването на NSDateComponents. Можете да конвертирате и двете дати A и B само в техните дневни компоненти, след което да проверите за разлика от 7.

person occulus    schedule 07.03.2011