根据当前日期 获取 本周 ,本月 的起止日期

本文提供了一段Objective-C代码,用于计算当前周的起止日期和本月的起止日期。通过使用NSCalendar和NSDateFormatter类,实现了从给定日期到周/月范围的高效转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/获取当前周 起止日期

-(NSString*)getWeekBeginAndEnd{

    NSString *resultStr;

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

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

    

    NSDate *date=[NSDate date];

    NSCalendar *calendar=[NSCalendar currentCalendar];

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

    NSDateComponents *comps=[calendar components:(NSWeekdayCalendarUnit|NSWeekdayOrdinalCalendarUnit) fromDate:date];

    //NSInteger week=[comps week];//今年第几周

    NSInteger weekday=[comps weekday];//注意  周日 “1”,周一是 “2”

    NSInteger theWeekDay=weekday-1;

    

    NSDate *nowDate=[[NSDate alloc] init];

    if (theWeekDay==0) {//今天是星期天

        NSTimeInterval interval=24*60*60*6;//6

        NSDate *benginDate=[nowDate initWithTimeIntervalSinceNow:-interval];

        NSString *beginDateStr=[NSString stringWithFormat:@"%@",[dateFormatter stringFromDate:benginDate]];

        NSString *endDateStr=[NSString stringWithFormat:@"%@",[dateFormatter stringFromDate:date]];

        resultStr=[NSString stringWithFormat:@"%@,%@",beginDateStr,endDateStr];

        

    }else{

        NSTimeInterval benginInterval=-(theWeekDay-1)*24*60*60;//向前 减的毫秒数

        NSTimeInterval endInterval=+(7-theWeekDay)*24*60*60;//向后 加的毫秒数

        NSDate *beginDate=[nowDate initWithTimeIntervalSinceNow:benginInterval];

        NSDate *endDate=[nowDate initWithTimeIntervalSinceNow:endInterval];

        NSString *beginDateStr=[NSString stringWithFormat:@"%@",[dateFormatter stringFromDate:beginDate]];

        NSString *endDateStr=[NSString stringWithFormat:@"%@",[dateFormatter stringFromDate:endDate]];

        resultStr=[NSString stringWithFormat:@"%@,%@",beginDateStr,endDateStr];

        

    }

    return resultStr;

    

}


//根据当前日期获取 本月 起止日期

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

    

    NSString *resultStr;

    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:NSMonthCalendarUnit startDate:&beginDate interval:&interval forDate:newDate];

    //分别修改为 NSDayCalendarUnit NSWeekCalendarUnit NSYearCalendarUnit

    if (ok) {

        endDate = [beginDate dateByAddingTimeInterval:interval-1];

    }else {

        resultStr=[NSString stringWithFormat:@"%@,%@",newDate,newDate];

        return resultStr;

    }

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

    [myDateFormatter setDateFormat:@"yyyyMMdd"];

    NSString *beginString = [myDateFormatter stringFromDate:beginDate];

    NSString *endString = [myDateFormatter stringFromDate:endDate];

    resultStr=[NSString stringWithFormat:@"%@,%@",beginString,endString];

    return  resultStr;

   }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值