iOS 日历

       这两天需要做一个日历,自己研究了一下写了一个简单的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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值