///获取某一周的开始和结束时间 lastNumber代表的是当前时间的前几周,0代表本周,-1上一周,1下一周
- (void)getWeekBeginAndEndWithNumbe:(NSInteger)lastNumber{
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];
// 计算当前日期和本周的星期一和星期天相差天数
long firstDiff,lastDiff;
if (weekDay == 1){
firstDiff = -6;
lastDiff = 0;
} else{
firstDiff = [calendar firstWeekday] - weekDay + 1;
lastDiff = 8 - weekDay;
}
//开始时间
NSDateComponents *begainDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:nowDate];
[begainDayComp setDay:day + firstDiff + 7*lastNumber];//在当前日期(去掉时分秒)基础上加上差的天数
NSDate *begain = [calendar dateFromComponents:begainDayComp];
//结束时间
NSDateComponents *endDayComp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:nowDate];
[endDayComp setDay:day + lastDiff + 7*lastNumber];//在当前日期(去掉时分秒)基础上加上差的天数
NSDate *endDayOfWeek = [calendar dateFromComponents:endDayComp];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSString *firstDay = [formatter stringFromDate:begain];
NSString *lastDay = [formatter stringFromDate:endDayOfWeek];
NSString *dateStr = [NSString stringWithFormat:@"%@-%@",firstDay,lastDay];
NSLog(@"某周:%@",dateStr);
}
///获取某一月的开始和结束时间 lastMonth代表的是当前时间的前几月,0代表本月,-1上一月,1下一月
- (void)getMonthBeginAndEndWith:(NSInteger )lastMonth{
NSDate * newDate = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
//设置新的日期
NSDateComponents *comp = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday fromDate:newDate];
[comp setMonth:comp.month+lastMonth];
newDate = [calendar dateFromComponents:comp];
double interval = 0;
NSDate *beginDate = nil;
NSDate *endDate = nil;
[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);
}
获取本周本月上周上月
最新推荐文章于 2022-12-02 11:48:54 发布