获取这个指定日期的上月的月初和月末时间

回复一网友问答:

给定一个日期,获取这个日期的上月的月初和月末时间。比如有个时间 是2013-03-01 如何求的2013-02-01和2013-02-28?


//本文日期获取的是系统当前日期,需指定日期直接赋值 year  month  day即可

 NSInteger year,month,day;
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDate *now = [NSDate date];;
    NSDateComponents *comps = [[NSDateComponents alloc] init];
    NSInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | 
    NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
    
    comps = [calendar components:unitFlags fromDate:now];
    year = [comps year];
    month = [comps month];
    day = [comps day];
    
    
     NSLog(@"现在是:%d年%d月%d日 ",year,month,day);
 //   month获取现在的月份,然后 判断是上个月份是否为12月
    if (month!=1) {
 //       如果mouth!=1,那么上个月月初为1号,年份不变
        NSLog(@"上个月月初:%d年%d月1日 ",year,month-1);
 //        处理上个月份为2月的特殊情况,
        if (month!=3) {
 //            如果上个月的月份为 4  6  9  11 月份,他们月末是30号
            if (month == 5 || month==7 || month ==10 || month ==12) {
                 NSLog(@"上个月月末:%d年%d月30日 ",year,month-1);
            }
            else {
                NSLog(@"上个月月末:%d年%d月31日 ",year,month-1);
            }
        }
 //        如果本月是3月份,上个月为为2月份,闰年2月月末29天,非闰年28天
        else {
            if ((year%4==0 && year%100!=0) || year%400==0) {
                 NSLog(@"上个月月末:%d年%d月29日 ",year,month-1);
            }
            else {
                 NSLog(@"上个月月末:%d年%d月28日 ",year,month-1);
            }
        }
        
    }
 //    如果当前月份是1月,上个月份就是12月  year-1,month=12
    else {
        NSLog(@"上个月月初为 %d年12月1日",year-1);
        NSLog(@"上个月月末为 %d年12月31日",year-1);
    }



测试效果:







评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值