2013-03-25 2 views
0

У меня есть NSArray of CFAbsoluteTime s. Они должны быть отсортированным от раннего до последнего, но если нет, то я могу сортировать его.Bucketize CFAbsoluteTimes в круглый день NSDates

Что мне нужно сделать, это найти минимальную и максимальную дату (например, Jan 1 до 5 января) и создать bucketization, который показывает количество на каждый день между, например .:

Jan 1 - 1 
Jan 2 - 0 
Jan 3 - 4 
Jan 4 - 0 
Jan 5 - 3 

Что-то вроде этого. Каков самый простой способ превратить абсолютные времена в округленный NSDate, который я могу сосчитать? Промежуточные формы для меня не имеют большого значения. Мне просто нужно написать функцию, которая возвращает счет, когда дана дата.

ответ

0

Возможно, вы будете счастливы полностью работать в Cocoa для этой проблемы, используя NSDate вместо CFAbsoluteTime.

Применимый документ: Date and Time Programming Guide.

Общий подход, который вам понадобится, - это работать в пределах NSCalendar, который инкапсулирует всю информацию о днях в месяц, месяцах в год, високосных годах, изменениях ДСТ, все для определенного часового пояса. Преобразуйте свои NSDate экземпляры в NSDateComponent, и вы сможете извлечь номера дня и месяца, а затем оттуда оттуда.

Помните, что функция, которую вы пишете (возвращаете счетчик с датой даты), неявно или явно должна обрабатывать значения NSCalendar и NSTimeZone. Ответ будет меняться в зависимости от года (это високосный год? Интервал включает в себя високосный день) и локаль/дату (наблюдаем ли мы летнее время в этом месте прямо сейчас?).