码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 获取本周,本月,本季,的起止日期

时间:2018-08-29 14:56:47      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:formatter   tar   nsdate   att   计算   2.0   font   设定   rbegin   

- (void)getQuarterBeginAndEndWith:(NSDate *)currentDate{

    NSDate *nowDate = [NSDate date];

    NSCalendar *calendar = [NSCalendar currentCalendar];

    NSDateComponents *comp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday  fromDate:nowDate];

    /**获取当前的月份*/

    NSInteger curentMonth = [comp month];

    NSString * currentYear = [NSString stringWithFormat:@"%ld",[comp year]];

    NSString * beginTime = [self getQuarterStartDateWithYear:currentYear currentMonth:curentMonth];

    NSString * endTime = [self getQuarterEndDateWithYear:currentYear currentMonth:curentMonth];

    NSString * str = [NSString stringWithFormat:@"季度开始时间 == %@  季度结束时间 == %@",beginTime,endTime];

    NSLog(@"%@",str);

}

 

//获得某季度的开始日期

- (NSString *)getQuarterStartDateWithYear:(NSString *)paraYear currentMonth:(NSInteger)currentMonth {

    

    NSString * beginTime = @"";

    if (currentMonth < 4) {

        beginTime = [paraYear stringByAppendingString:@"-01-01"];

    } else if (currentMonth >= 4 && currentMonth < 7) {

        beginTime = [paraYear stringByAppendingString:@"-04-01"];

    } else if (currentMonth >= 7 && currentMonth < 10) {

        beginTime = [paraYear stringByAppendingString:@"-07-01"];

    } else if (currentMonth >= 10 && currentMonth < 12) {

        beginTime = [paraYear stringByAppendingString:@"-10-01"];

    }

    return beginTime;

}

 

//获得某季度的结束日期

- (NSString *)getQuarterEndDateWithYear:(NSString *)paraYear currentMonth:(NSInteger)currentMonth {

    NSString * endTime = @"";

    if (currentMonth < 4) {

        endTime = [paraYear stringByAppendingString:@"-03-31"];

    } else if (currentMonth >= 4 && currentMonth < 7) {

        endTime = [paraYear stringByAppendingString:@"-06-30"];

    } else if (currentMonth >= 7 && currentMonth < 10) {

        endTime = [paraYear stringByAppendingString:@"-09-30"];

    } else if (currentMonth >= 10 && currentMonth < 12) {

        endTime = [paraYear stringByAppendingString:@"-12-31"];

    }

    return endTime;

}

 

 

- (void)getWeekBeginAndEndWith:(NSDate *)newDate{

    NSDate *nowDate = [NSDate date];

    NSCalendar *calendar = [NSCalendar currentCalendar];

    NSDateComponents *comp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday  fromDate:nowDate];

    // 获取今天是周几

    NSInteger weekDay = [comp weekday];

    /**获取当前几个月*/

    NSInteger monthDay = [comp month];

    NSLog(@"%ld",monthDay);

    

    // 获取几天是几号

    NSInteger day = [comp day];

    NSLog(@"%ld----%ld",weekDay,day);

    

    // 计算当前日期和本周的星期一和星期天相差天数

    long firstDiff,lastDiff;

    //    weekDay = 1;

    if (weekDay == 1)

    {

        firstDiff = -6;

        lastDiff = 0;

    }

    else

    {

        firstDiff = [calendar firstWeekday] - weekDay + 1;

        lastDiff = 8 - weekDay;

    }

    NSLog(@"firstDiff: %ld   lastDiff: %ld",firstDiff,lastDiff);

    

    // 在当前日期(去掉时分秒)基础上加上差的天数

    NSDateComponents *firstDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay  fromDate:nowDate];

    [firstDayComp setDay:day + firstDiff];

    NSDate *firstDayOfWeek = [calendar dateFromComponents:firstDayComp];

    

    NSDateComponents *lastDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay   fromDate:nowDate];

    [lastDayComp setDay:day + lastDiff];

    NSDate *lastDayOfWeek = [calendar dateFromComponents:lastDayComp];

    

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

    [formatter setDateFormat:@"MM月dd日"];

    NSString *firstDay = [formatter stringFromDate:firstDayOfWeek];

    NSString *lastDay = [formatter stringFromDate:lastDayOfWeek];

    NSLog(@"%@=======%@",firstDay,lastDay);

    

    NSString *dateStr = [NSString stringWithFormat:@"%@-%@",firstDay,lastDay];

    

    NSLog(@"%@",dateStr);

}

 

- (void)getMonthBeginAndEndWith:(NSDate *)newDate{

    if (newDate == nil) {

        newDate = [NSDate date];

        

    }

    double interval = 0;

    NSDate *beginDate = nil;

    NSDate *endDate = nil;

    NSCalendar *calendar = [NSCalendar currentCalendar];

    [calendar setFirstWeekday:2];

    //设定周一为周首日

    BOOL ok = [calendar rangeOfUnit:NSCalendarUnitMonth 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];

    NSString *endString = [myDateFormatter stringFromDate:endDate];

    NSString *s = [NSString stringWithFormat:@"%@-%@",beginString,endString];

    NSLog(@"%@",s);

    

}

    

iOS 获取本周,本月,本季,的起止日期

标签:formatter   tar   nsdate   att   计算   2.0   font   设定   rbegin   

原文地址:https://www.cnblogs.com/Jackie-subDai/p/9552540.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!