您的位置:首页 > 移动开发 > IOS开发

iOS 日历

2016-07-14 21:35 405 查看

       这两天需要做一个日历,自己研究了一下写了一个简单的Demo版本出来供大家参考,纯代码写的

首先,日历我是用collection view写的,其次,我用的是自带的date属性来获取数据的

最主要的方法就是获取数据源,下面是我注释的基本数据源方法

#pragma mark -- date

//得到今天是几号

- (NSInteger)day:(NSDate *)date{

    NSDateComponents *components = [[NSCalendarcurrentCalendar]components:(NSCalendarUnitYear
|NSCalendarUnitMonth |NSCalendarUnitDay)
fromDate:date];

    return [componentsday];

}

//得到今天是几月

- (NSInteger)month:(NSDate *)date{

    NSDateComponents *components = [[NSCalendarcurrentCalendar]components:(NSCalendarUnitYear
|NSCalendarUnitMonth |NSCalendarUnitDay)
fromDate:date];

    return [componentsmonth];

}

//得到今年是几年

- (NSInteger)year:(NSDate *)date{

    NSDateComponents *components = [[NSCalendarcurrentCalendar]components:(NSCalendarUnitYear
|NSCalendarUnitMonth |NSCalendarUnitDay)
fromDate:date];

    return [componentsyear];

}

//第一周的第一天在什么位置

- (NSInteger)firstWeekdayInThisMonth:(NSDate *)date{

    NSCalendar *calendar = [NSCalendarcurrentCalendar];

    

    [calendar setFirstWeekday:1];//1.Sun. 2.Mon. 3.Thes. 4.Wed. 5.Thur.
6.Fri. 7.Sat.

    NSDateComponents *comp = [calendarcomponents:(NSCalendarUnitYear
|NSCalendarUnitMonth |
NSCalendarUnitDay) fromDate:date];

    [comp setDay:1];

    NSDate *firstDayOfMonthDate = [calendardateFromComponents:comp];

    

    NSUInteger firstWeekday = [calendarordinalityOfUnit:NSCalendarUnitWeekdayinUnit:NSCalendarUnitWeekOfMonthforDate:firstDayOfMonthDate];

    return firstWeekday -1;

}

//这个月有多少天

- (NSInteger)totaldaysInThisMonth:(NSDate *)date{

    NSRange totaldaysInMonth = [[NSCalendarcurrentCalendar]rangeOfUnit:NSCalendarUnitDayinUnit:NSCalendarUnitMonthforDate:date];

    return totaldaysInMonth.length;

}

//上个月的date数据(用于刷新)

- (NSDate *)lastMonth:(NSDate *)date{

    NSDateComponents *dateComponents = [[NSDateComponentsalloc]init];

    dateComponents.month = -1;

    NSDate *newDate = [[NSCalendarcurrentCalendar]dateByAddingComponents:dateComponentstoDate:dateoptions:0];

    return newDate;

}

//下个月的date数据(用于刷新)

- (NSDate*)nextMonth:(NSDate *)date{

    NSDateComponents *dateComponents = [[NSDateComponentsalloc]init];

    dateComponents.month = +1;

    NSDate *newDate = [[NSCalendarcurrentCalendar]dateByAddingComponents:dateComponentstoDate:dateoptions:0];

    return newDate;

}

看下效果



不好意思,上次传的没传上去,见谅,这次传上去了

我已经上传到git上面了:https://github.com/liuhugit/NewDate

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS 日历 date