有些时候,在开发中想判断这个日期是在周几,可以通过以下代码或者使用分类来实现
1、方法一
直接写在需要判断的文件中,通过传入指定格式字符串来判断今日是周几
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *date = [dateFormatter dateFromString:@"2022-10-02"];
NSCalendar* calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSCalendarUnitWeekday;
NSDateComponents* comps = [calendar components:unitFlags fromDate:date];
//从周日开始,周日为1,周一为2,以此类推
NSLog(@"%ld", [comps weekday]);
2、方法二
创建NSDate的分类(Category),使用类方法调用,可以传入NSDate数据或者直接传入字符串返回NSInteger数据,当然也可以选择完善一下直接返回@“周一”,@“周二”这样的字符串
+ (NSInteger)acquireWeekDayFromDate:(NSDate*)date {
NSCalendar* calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSCalendarUnitWeekday;
NSDateComponents* comps = [calendar components:unitFlags fromDate:date];
return [comps weekday];
}
+ (NSInteger)acquireWeekDayFromString:(NSString*)str {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *date = [dateFormatter dateFromString:str];
NSCalendar* calendar = [NSCalendar currentCalendar];
unsigned unitFlags = NSCalendarUnitWeekday;
NSDateComponents* comps = [calendar components:unitFlags fromDate:date];
//从周日开始,周日为1,周一为2,以此类推
// NSLog(@"%ld", [comps weekday]);
return [comps weekday];
}