美文网首页Swift编程
知道这些,轻松写出日历控件

知道这些,轻松写出日历控件

作者: 贝尔特伦 | 来源:发表于2017-07-11 18:00 被阅读91次

    日历demo链接https://github.com/zhangxianhongx/Cleander
    //得到date中是第几天

    - (NSInteger)day:(NSDate *)date{
    NSDateComponents *components = [[NSCalendar currentCalendar] components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date];
    return [components day];
    }
    

    //得到date中时第几月

    - (NSInteger)month:(NSDate *)date{
    NSDateComponents *components = [[NSCalendar currentCalendar] components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date];
    return [components month];
    }
    

    //得到date中是哪一年

    - (NSInteger)year:(NSDate *)date{
    NSDateComponents *components = [[NSCalendar currentCalendar] components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date];
    return [components year];
    }
    

    //计算上一个月的date

    - (NSDate *)lastMonth:(NSDate *)date{
    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
    dateComponents.month = -1;
    NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:date options:0];
    return newDate;
    }
    

    //pragma makr 计算下一个月的date

    - (NSDate*)nextMonth:(NSDate *)date{
    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
    dateComponents.month = +1;
    NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:date options:0];
    return newDate;
    }
    

    //获取date中月份的第一天对应星期几

    - (NSInteger)firstWeekdayInThisMonth:(NSDate *)date{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    
    [calendar setFirstWeekday:1];//1.Sun. 2.Mon. 3.Thes. 4.Wed. 5.Thur. 6.Fri. 7.Sat.
    NSDateComponents *comp = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date];
    [comp setDay:1];
    NSDate *firstDayOfMonthDate = [calendar dateFromComponents:comp];
    
    NSUInteger firstWeekday = [calendar ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitWeekOfMonth forDate:firstDayOfMonthDate];
    return firstWeekday - 1;
    }
    

    //获取date中日期对应的星期 0星期六 1星期天 2星期一 3星期二 4星期三 5星期四 6星期五

    - (NSInteger)getWeekWithDate:(NSDate *)date{
    
    NSInteger weekDay = [self firstWeekdayInThisMonth:date];
    NSInteger cureentDay = [self day:date];
    
    //当前日期
    NSInteger currentWeek = (cureentDay%7 + weekDay)%7;
    return currentWeek;
    
    }
    

    //得到date中每月有多少天

    - (NSInteger)totaldaysInThisMonth:(NSDate *)date{
    NSRange totaldaysInMonth = [[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date];
    return totaldaysInMonth.length;
    }

    相关文章

      网友评论

        本文标题:知道这些,轻松写出日历控件

        本文链接:https://www.haomeiwen.com/subject/ywvmhxtx.html