//根据日期返回当月的天数 (频繁调用 [NSCalendar currentCalendar] 可能存在性能问题)
- (NSUInteger)getDayCountWithDay:(NSDate *)date{ return [[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date].length; }
//传入具体的年月日来获取星期
- (NSString *)getWeekWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day{ //根据日期获取 NSDateComponents *comps = [[NSDateComponents alloc] init]; [comps setDay:day]; [comps setMonth:month]; [comps setYear:year]; NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; NSDate *date = [gregorian dateFromComponents:comps]; NSDateComponents *weekdayComponents = [gregorian components:NSCalendarUnitWeekday fromDate:date]; NSInteger weekday = [weekdayComponents weekday]; NSArray *array = [NSArray arrayWithObjects:@"星期日",@"星期一",@"星期二",@"星期三",@"星期四",@"星期五",@"星期六", nil]; return array[weekday-1]; }
//距离一个时间点的某个时间长度的时间
NSTimeInterval minute = 60*60; //分钟 NSTimeInterval hour = 60*60; //小时 NSTimeInterval day = 24*60*60; //天 //距离现在某个时间 [NSDate dateWithTimeIntervalSinceNow:<#(NSTimeInterval)#>]; //距离一个相对日期的某个时间 [NSDate dateWithTimeInterval:<#(NSTimeInterval)#> sinceDate:<#(nonnull NSDate *)#>]; //距离1970年1月1日的某个时间 [NSDate dateWithTimeIntervalSince1970:<#(NSTimeInterval)#>]; //距离2001年1月1日的某个时间 [NSDate dateWithTimeIntervalSinceReferenceDate:<#(NSTimeInterval)#>];
//根据参数获取返回的时间
- (NSInteger)getTime:(NSString *)time{ NSDate *now = [NSDate date]; NSCalendar *calendar = [NSCalendar currentCalendar]; NSUInteger unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitWeekday; NSDateComponents *dateComponent = [calendar components:unitFlags fromDate:now]; if ([time isEqualToString:@"year"]) { return [dateComponent year]; } else if ([time isEqualToString:@"month"]){ return [dateComponent month]; }else if ([time isEqualToString:@"day"]){ return [dateComponent day]; }else if ([time isEqualToString:@"hour"]){ return [dateComponent hour]; }else if ([time isEqualToString:@"minute"]){ return [dateComponent minute]; }else if ([time isEqualToString:@"second"]){ return [dateComponent second]; }else if ([time isEqualToString:@"week"]){ return [dateComponent weekday]; } return 0; }