diff --git a/Source/CKCalendarView.h b/Source/CKCalendarView.h index 4615c5a..0b5c6d4 100644 --- a/Source/CKCalendarView.h +++ b/Source/CKCalendarView.h @@ -14,6 +14,7 @@ // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // +#import @protocol CKCalendarDelegate; @@ -80,5 +81,7 @@ typedef enum { - (void)calendar:(CKCalendarView *)calendar didChangeToMonth:(NSDate *)date; - (void)calendar:(CKCalendarView *)calendar didLayoutInRect:(CGRect)frame; +-(NSArray *)datesBetweenDates:(NSDate *)startDate endDate:(NSDate *)endDate; + @end \ No newline at end of file diff --git a/Source/CKCalendarView.m b/Source/CKCalendarView.m index e79e5ac..4a07aa8 100644 --- a/Source/CKCalendarView.m +++ b/Source/CKCalendarView.m @@ -78,7 +78,7 @@ @implementation DateButton - (void)setDate:(NSDate *)date { _date = date; if (date) { - NSDateComponents *comps = [self.calendar components:NSDayCalendarUnit|NSMonthCalendarUnit fromDate:date]; + NSDateComponents *comps = [self.calendar components:NSCalendarUnitDay|NSCalendarUnitMonth fromDate:date]; [self setTitle:[NSString stringWithFormat:@"%d", comps.day] forState:UIControlStateNormal]; } else { [self setTitle:@"" forState:UIControlStateNormal]; @@ -134,7 +134,7 @@ - (id)initWithStartDay:(CKCalendarStartDay)firstDay { } - (void)_init:(CKCalendarStartDay)firstDay { - self.calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; + self.calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; [self.calendar setLocale:[NSLocale currentLocale]]; self.cellWidth = DEFAULT_CELL_WIDTH; @@ -289,7 +289,7 @@ - (void)layoutSubviews { NSDate *endDate = [self _firstDayOfNextMonthContainingDate:self.monthShowing]; if (!self.onlyShowCurrentMonth) { NSDateComponents *comps = [[NSDateComponents alloc] init]; - [comps setWeek:numberOfWeeksToShow]; + [comps setWeekOfMonth:numberOfWeeksToShow]; endDate = [self.calendar dateByAddingComponents:comps toDate:date options:0]; } @@ -550,13 +550,13 @@ - (UIColor *)dateBorderColor { #pragma mark - Calendar helpers - (NSDate *)_firstDayOfMonthContainingDate:(NSDate *)date { - NSDateComponents *comps = [self.calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:date]; + NSDateComponents *comps = [self.calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date]; comps.day = 1; return [self.calendar dateFromComponents:comps]; } - (NSDate *)_firstDayOfNextMonthContainingDate:(NSDate *)date { - NSDateComponents *comps = [self.calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:date]; + NSDateComponents *comps = [self.calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date]; comps.day = 1; comps.month = comps.month + 1; return [self.calendar dateFromComponents:comps]; @@ -567,8 +567,8 @@ - (BOOL)dateIsInCurrentMonth:(NSDate *)date { } - (NSComparisonResult)_compareByMonth:(NSDate *)date toDate:(NSDate *)otherDate { - NSDateComponents *day = [self.calendar components:NSYearCalendarUnit|NSMonthCalendarUnit fromDate:date]; - NSDateComponents *day2 = [self.calendar components:NSYearCalendarUnit|NSMonthCalendarUnit fromDate:otherDate]; + NSDateComponents *day = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth fromDate:date]; + NSDateComponents *day2 = [self.calendar components:NSCalendarUnitYear|NSCalendarUnitMonth fromDate:otherDate]; if (day.year < day2.year) { return NSOrderedAscending; @@ -584,7 +584,7 @@ - (NSComparisonResult)_compareByMonth:(NSDate *)date toDate:(NSDate *)otherDate } - (NSInteger)_placeInWeekForDate:(NSDate *)date { - NSDateComponents *compsFirstDayInMonth = [self.calendar components:NSWeekdayCalendarUnit fromDate:date]; + NSDateComponents *compsFirstDayInMonth = [self.calendar components:NSCalendarUnitWeekday fromDate:date]; return (compsFirstDayInMonth.weekday - 1 - self.calendar.firstWeekday + 8) % 7; } @@ -598,8 +598,8 @@ - (BOOL)date:(NSDate *)date1 isSameDayAsDate:(NSDate *)date2 { return NO; } - NSDateComponents *day = [self.calendar components:NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:date1]; - NSDateComponents *day2 = [self.calendar components:NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:date2]; + NSDateComponents *day = [self.calendar components:NSCalendarUnitEra|NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:date1]; + NSDateComponents *day2 = [self.calendar components:NSCalendarUnitEra|NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:date2]; return ([day2 day] == [day day] && [day2 month] == [day month] && [day2 year] == [day year] && @@ -607,7 +607,7 @@ - (BOOL)date:(NSDate *)date1 isSameDayAsDate:(NSDate *)date2 { } - (NSInteger)_numberOfWeeksInMonthContainingDate:(NSDate *)date { - return [self.calendar rangeOfUnit:NSWeekCalendarUnit inUnit:NSMonthCalendarUnit forDate:date].length; + return [self.calendar rangeOfUnit:NSCalendarUnitWeekOfYear inUnit:NSCalendarUnitMonth forDate:date].length; } - (NSDate *)_nextDay:(NSDate *)date { @@ -623,8 +623,8 @@ - (NSDate *)_previousDay:(NSDate *)date { } - (NSInteger)_numberOfDaysFromDate:(NSDate *)startDate toDate:(NSDate *)endDate { - NSInteger startDay = [self.calendar ordinalityOfUnit:NSDayCalendarUnit inUnit:NSEraCalendarUnit forDate:startDate]; - NSInteger endDay = [self.calendar ordinalityOfUnit:NSDayCalendarUnit inUnit:NSEraCalendarUnit forDate:endDate]; + NSInteger startDay = [self.calendar ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitEra forDate:startDate]; + NSInteger endDay = [self.calendar ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitEra forDate:endDate]; return endDay - startDay; } @@ -652,4 +652,13 @@ + (UIImage *)_imageNamed:(NSString *)name withColor:(UIColor *)color { return coloredImg; } +-(NSArray *)datesBetweenDates:(NSDate *)startDate endDate:(NSDate *)endDate{ + NSMutableArray *dates = [NSMutableArray array]; + NSDate *curDate = startDate; + while([curDate timeIntervalSince1970] <= [endDate timeIntervalSince1970]) { + [dates addObject:curDate]; + curDate = [NSDate dateWithTimeInterval:86400 sinceDate:curDate]; + } + return dates; +} @end \ No newline at end of file