• 得到一个月或是一个星期的最后一天 得到一个月或一个星期的第一天


    //////////////////

    NSCalendarUnit  传入NSWeekOfMonthCalendarUnit    代表星期

              传入NSMonthCalendarUnit              代表月

    //得到一个月或是一个星期的最后一天

    +(NSDate *)getLastDateWithCalendarUnit:(NSCalendarUnit)unit withDate:(NSDate *)fromDate

    {

        NSDate *beginOfMonth = nil;

        NSTimeInterval endDate;

        NSCalendar *calendar = [NSCalendarcurrentCalendar];

       //说明以星期一作为这星期的第一天。若传入1,则代表以星期天作为这星期的第一天

        [calendar setFirstWeekday:2];

        BOOL success = [calendar rangeOfUnit:unit startDate:&beginOfMonth interval:&endDate forDate:fromDate];

       

        if (!success){

            NSLog(@"Error:failed to get day.");

        }

        //NSTimeInterval转为int的类型。

        int day = ((int)endDate)/(3600*24);

        //将日期解析到NSDateComponent对象中去。

        NSDateComponents *monthComponent = [calendar components:NSMonthCalendarUnitfromDate:fromDate];

        NSDateComponents *component = [[NSDateComponentsalloc]init];

        [component setDay:day];

        [component setMonth:[monthComponent month]];

        //这段代码是从NSDateComponent获得NSDate。下面得到的是一个月的最后一天。

        NSDate *lastDate = [calendar dateFromComponents:component];

        return lastDate;

    }

    //得到一个月或一个星期的第一天

    + (NSDate *)getFirstDateWithCalendarUnit:(NSCalendarUnit)unit withDate:(NSDate *)fromDate

    {

        NSDate *beginOfMonth = nil;

        NSTimeInterval endDate;

        NSCalendar *calendar = [NSCalendarcurrentCalendar];

        [calendar setFirstWeekday:2];

        BOOL success = [calendar rangeOfUnit:unit startDate:&beginOfMonth interval:&endDate forDate:fromDate];

        

        if (success){

            return beginOfMonth;

        }else{

            return nil;

        }

    }

    //得到本月或是本周的日期数组,返回的数组为这个月或是这星期截止到今天的所有日期

    + (NSMutableArray *)getArrayWithCalendarUnit:(NSCalendarUnit)unit withDate:(NSDate *)withDate

    {

        NSTimeInterval secondsPerDay = 24 * 60 * 60;

        NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];

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

        NSString *todayStr = [dateFormatter stringFromDate:withDate];

        

        NSDate *beginningOfMonth = nil;

        NSCalendar *calendar = [NSCalendarcurrentCalendar];

        [calendar setFirstWeekday:2];

        BOOL ok = [calendar rangeOfUnit:unit startDate:&beginningOfMonth interval:NULL forDate:withDate];

        if (ok) {

            NSLog(@"beginningOfMonth = %@", beginningOfMonth);

            NSMutableArray *dateArray = [NSMutableArray new];

            for (int i = 0; i < 30; i ++) {

        //dateString为这个月或是星期的第一天

                NSString *dateString = [dateFormatter stringFromDate:beginningOfMonth];

                if ([dateString isEqualToString:todayStr]) {

                    [dateArray addObject:todayStr];

                    return dateArray;

                }else{

                    [dateArray addObject:dateString];

                    NSDate *nextDay = [beginningOfMonth dateByAddingTimeInterval:secondsPerDay];

                    beginningOfMonth = nextDay;

                }

            }

        }

        returnNil;

    }

  • 相关阅读:
    Docker搭建NSQ实时分布式消息集群
    雪花算法
    代码抽象三原则
    PostgreSQL12-主从复制
    logrus日志框架
    Golang中的布隆过滤器
    golang-Json编码解码
    List分组迭代器
    redis-cli命令行远程连接redis服务
    pycharm常用快捷键与设置
  • 原文地址:https://www.cnblogs.com/wudan7/p/3687341.html
Copyright © 2020-2023  润新知