zoukankan      html  css  js  c++  java
  • 得到一个月或是一个星期的最后一天 得到一个月或一个星期的第一天

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

    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;

    }

  • 相关阅读:
    Exchanger, Changing data between concurrent tasks
    Java Concurrency
    Linux禁止ping以及开启ping的方法
    Linux内存使用消耗高
    Linux主机系统目录误操作权限修改为777修复方法
    linux磁盘空间用满的处理方法
    Linux查看实时带宽流量情况
    网站无法打开通常解决方法
    iptables的conntrack表满了导致访问网站很慢
    影响网站打开速度的因素有哪些
  • 原文地址:https://www.cnblogs.com/wudan7/p/3687341.html
Copyright © 2011-2022 走看看