iOS-月日期,本月初始第一天和最后一天,以及比较两个日期的类方法

+(UIColor*)mostColor:(UIImage *)image{

    

    

#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_6_1

    int bitmapInfo = kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedLast;

#else

    int bitmapInfo = kCGImageAlphaPremultipliedLast;

#endif

    

    //第一步 先把图片缩小 加快计算速度. 但越小结果误差可能越大

    CGSize thumbSize=CGSizeMake(50, 50);

    

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    CGContextRef context = CGBitmapContextCreate(NULL,

                                                 thumbSize.width,

                                                 thumbSize.height,

                                                 8,//bits per component

                                                 thumbSize.width*4,

                                                 colorSpace,

                                                 bitmapInfo);

    

    CGRect drawRect = CGRectMake(0, 0, thumbSize.width, thumbSize.height);

    CGContextDrawImage(context, drawRect, image.CGImage);

    CGColorSpaceRelease(colorSpace);

    

    

    

    //第二步 取每个点的像素值

    unsigned char* data = CGBitmapContextGetData (context);

    

    if (data == NULL) return nil;

    

    NSCountedSet *cls=[NSCountedSet setWithCapacity:thumbSize.width*thumbSize.height];

    

    for (int x=0; x<thumbSize.width; x++) {

        for (int y=0; y<thumbSize.height; y++) {

            

            int offset = 4*(x*y);

            

            int red = data[offset];

            int green = data[offset+1];

            int blue = data[offset+2];

            int alpha =  data[offset+3];

            

            NSArray *clr=@[@(red),@(green),@(blue),@(alpha)];

            [cls addObject:clr];

            

        }

    }

    CGContextRelease(context);

    

    

    //第三步 找到出现次数最多的那个颜色

    NSEnumerator *enumerator = [cls objectEnumerator];

    NSArray *curColor = nil;

    

    NSArray *MaxColor=nil;

    NSUInteger MaxCount=0;

    

    while ( (curColor = [enumerator nextObject]) != nil )

    {

        NSUInteger tmpCount = [cls countForObject:curColor];

        

        if ( tmpCount < MaxCount ) continue;

        

        MaxCount=tmpCount;

        MaxColor=curColor;

        

    }

    

    return [UIColor colorWithRed:([MaxColor[0] intValue]/255.0f) green:([MaxColor[1] intValue]/255.0f) blue:([MaxColor[2] intValue]/255.0f) alpha:([MaxColor[3] intValue]/255.0f)];

}

#pragma mark--日期选为本月第一天和最后一天算法

+ (NSString *)getMonthBeginWith:(NSString *)dateStr{

    

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

    [format setDateFormat:@"yyyy-MM"];

    NSDate *newDate=[format dateFromString:dateStr];

    double interval = 0;

    NSDate *beginDate = nil;

    NSDate *endDate = nil;

    NSCalendar *calendar = [NSCalendar currentCalendar];

    

    [calendar setFirstWeekday:2];//设定周一为周首日

    BOOL ok = [calendar rangeOfUnit:NSMonthCalendarUnit startDate:&beginDate interval:&interval forDate:newDate];

    //分别修改为 NSDayCalendarUnit NSWeekCalendarUnit NSYearCalendarUnit

    if (ok) {

        endDate = [beginDate dateByAddingTimeInterval:interval-1];

    }else {

        return @"";

    }

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

    [myDateFormatter setDateFormat:@"YYYY-MM-dd"];

    NSString *beginString = [myDateFormatter stringFromDate:beginDate];

    return beginString;

}

+ (NSString *)getMonthEndWith:(NSString *)dateStr{

    

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

    [format setDateFormat:@"yyyy-MM"];

    NSDate *newDate=[format dateFromString:dateStr];

    double interval = 0;

    NSDate *beginDate = nil;

    NSDate *endDate = nil;

    NSCalendar *calendar = [NSCalendar currentCalendar];

    

    [calendar setFirstWeekday:2];//设定周一为周首日

    BOOL ok = [calendar rangeOfUnit:NSMonthCalendarUnit startDate:&beginDate interval:&interval forDate:newDate];

    //分别修改为 NSDayCalendarUnit NSWeekCalendarUnit NSYearCalendarUnit

    if (ok) {

        endDate = [beginDate dateByAddingTimeInterval:interval-1];

    }else {

        return @"";

    }

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

    [myDateFormatter setDateFormat:@"YYYY-MM-dd"];

    NSString *endString = [myDateFormatter stringFromDate:endDate];

    return endString;

}

#pragma mark--比对前面时间是不是大于后面时间

+ (BOOL)comparewithoneDayStr:(NSString *)oneDayStr AndanotherDay:(NSString *)AnotherDay{

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

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

    NSDate *dateA = [dateFormatter dateFromString:oneDayStr];

    NSDate *dateB = [dateFormatter dateFromString:AnotherDay];

    NSComparisonResult result = [dateA compare:dateB];

    NSLog(@"oneDay : %@, anotherDay : %@", oneDayStr, AnotherDay);

    if (result == NSOrderedDescending) {

        //在指定时间前面 过了指定时间 过期

        NSLog(@"oneDay  is in the future"); // 未来时间

        return YES;

    }

    else if (result == NSOrderedAscending){

        //没过指定时间 没过期

        //NSLog(@"Date1 is in the past"); // 过去时间

        return NO;

    }

    //刚好时间一样.

    //NSLog(@"Both dates are the same");//现在时间

    return YES;

    

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值