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

/获取当前周 起止日期

-(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;

   }



以下是Python的datetime实现本周、上周、本月和上月起止日期的代码: ```python import datetime # 本周起止日期 now = datetime.datetime.now() start_of_week = now - datetime.timedelta(days=now.weekday()) end_of_week = start_of_week + datetime.timedelta(days=6) # 上周起止日期 start_of_last_week = start_of_week - datetime.timedelta(days=7) end_of_last_week = end_of_week - datetime.timedelta(days=7) # 本月起止日期 start_of_month = datetime.datetime(now.year, now.month, 1) if now.month == 12: end_of_month = datetime.datetime(now.year+1, 1, 1) - datetime.timedelta(days=1) else: end_of_month = datetime.datetime(now.year, now.month+1, 1) - datetime.timedelta(days=1) # 上月起止日期 last_month = now.month - 1 if now.month > 1 else 12 last_year = now.year - 1 if last_month == 12 else now.year start_of_last_month = datetime.datetime(last_year, last_month, 1) end_of_last_month = datetime.datetime(now.year, now.month, 1) - datetime.timedelta(days=1) # 输出起止日期 print("本周起止日期:", start_of_week.date(), "-", end_of_week.date()) print("上周起止日期:", start_of_last_week.date(), "-", end_of_last_week.date()) print("本月起止日期:", start_of_month.date(), "-", end_of_month.date()) print("上月起止日期:", start_of_last_month.date(), "-", end_of_last_month.date()) ``` 其中关键的方法是`datetime.timedelta()`表示时间差,例如`datetime.timedelta(days=7)`表示7天时间差。`datetime.datetime()`则表示一个具体的日期时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值