Вопрос

Я создаю еженедельный вид календаря, а часть этого рассчитывает первый день отображаемой недели. Я также хочу, чтобы сохраненная дата было время в первую очередь второе время, поэтому я пытаюсь обеспечить, чтобы HH: MM: SS на дату 00:00:00.

У меня есть следующий код, который работает нормально в большинстве случаев, но дает, казалось бы, случайные результаты, когда даты приходят к началу или концу года.

unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSWeekCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;

NSDateComponents *comps = [gregorian components:unitFlags fromDate:self.selectedDate];
NSDateComponents *addcomps = [[NSDateComponents alloc] init];
[addcomps setDay:1-[comps weekday]];

NSDate *fixedDate = [appDelegate.gregorian dateByAddingComponents:addcomps toDate:self.selectedDate options:0];
////FIXED DATE IS NOW FIRST DAY OF DISPLAYED WEEK

comps = [appDelegate.gregorian components:unitFlags fromDate:fixedDate]; ///fixedDate = 2010-01-03 02:51:25 -0600
[comps setHour:0];
[comps setMinute:0];
[comps setSecond:0];
self.savedBeginningDate = [appDelegate.gregorian dateFromComponents:comps]; ///self.savedBeginningDate = 2011-01-09 00:00:00 -0600

Как-то установить HH: MM: SS до 00:00:00 меняет дату с 3 января 2010 года по 11 января 2009 года.

Я добавил результаты даты Commonmponents в качестве комментариев по этим строкам. Это странное поведение, кажется, происходит только в том, что около года знаки и не происходит в любой другой неделе, которую я видел.

Спасибо за любую помощь!

Это было полезно?

Решение

Я понял это: я должен был взять NSWeekCalendarUnit от единицы. Никаких подсказки почему, но по какой-то причине с той там даты были вычислены неправильно!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top