根据选择的日期自动计算天数

1、以12点为节点

+ (CGFloat)beginFKBTime:(NSString *)bTime endFKBTime:(NSString *)eTime{

    NSArray *bArray = [bTime componentsSeparatedByString:@" "];

    NSArray *eArray = [eTime componentsSeparatedByString:@" "];

    NSDateFormatter *Formatter=[[NSDateFormatter alloc] init];

    [Formatter setDateFormat:@"yyyy-MM-dd HH:mm"];

    [Formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

    NSDate *bDate = [Formatter dateFromString:bTime];

    NSDate *eDate = [Formatter dateFromString:eTime];

    NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];

    [dateFormatter setDateFormat:@"yyyy-MM-dd"];

    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

    NSDate *bDate5 = [dateFormatter dateFromString:bArray.firstObject];

    NSDate *eDate5 = [dateFormatter dateFromString:eArray.firstObject];

    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

    unsigned int unitFlags = NSCalendarUnitDay;

    NSDateComponents *comps = [gregorian components:unitFlags fromDate:bDate5  toDate:eDate5  options:0];

    CGFloat time = 0;

    BOOL bTimeAF = NO;//是否上午出发

    BOOL eTimeAF = NO;//是否上午回来

    NSDate *bDate1 = [bDate earlierDate:[Formatter dateFromString:[NSString stringWithFormat:@"%@ 12:00",bArray.firstObject]]];

    NSDate *eDate1 = [eDate earlierDate:[Formatter dateFromString:[NSString stringWithFormat:@"%@ 12:00",eArray.firstObject]]];

    if ([comps day] == 0) {

        if ([bDate isEqualToDate:bDate1]) {

            bTimeAF = YES;

        }

        if ([eDate isEqualToDate:eDate1]) {

            eTimeAF = YES;

        }

        if (bTimeAF && eTimeAF) {//上午出发 上午回来

            time = 0.5;

        }else if (bTimeAF && eTimeAF == NO){//上午出发 下午回来

            time = 1.0;

        }else if (!bTimeAF && !eTimeAF){//下午出发 下午回来

            time = 0.5;

        }else if (bTimeAF == NO && eTimeAF){//下午出发 上午回来

            time = 0;

        }

    }else{

        if ([bDate isEqualToDate:bDate1]) {

            bTimeAF = YES;

        }

        if ([eDate isEqualToDate:eDate1]) {

            eTimeAF = YES;

        }

        if (bTimeAF && eTimeAF) {//上午出发 上午回来

            time = 0.5;

        }else if (bTimeAF && eTimeAF == NO){//上午出发 下午回来            

            time = 1.0;

        }else if (!bTimeAF && !eTimeAF){//下午出发 下午回来

            time = 0.5;

        }else if (bTimeAF == NO && eTimeAF){//下午出发 上午回来

            time = 0;

        }

    }

    return [comps day] + time;

}

2、正常的计算

+ (NSInteger)startDate:(NSDate *)startDate endDate:(NSDate *)endDate {

    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

    NSDateComponents * comp = [calendar components:NSCalendarUnitDay

                                             fromDate:startDate

                                               toDate:endDate

                                              options:NSCalendarWrapComponents];

    return comp.day;

}

posted @ 2018-01-10 15:23  木末映水  阅读(1159)  评论(0编辑  收藏  举报