#pragma mark ---
#pragma mark --- 各種方法
/**
*? 根據(jù)當(dāng)前月獲取有多少天
*
*? @param dayDate 但前時間
*
*? @return 天數(shù)
*/
- (NSInteger)getNumberOfDays:(NSDate *)dayDate
{
NSCalendar *calendar = [NSCalendar currentCalendar];
NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:dayDate];
return range.length;
}
/**
*? 根據(jù)前幾月獲取時間
*
*? @param date? 當(dāng)前時間
*? @param month 第幾個月 正數(shù)為前? 負(fù)數(shù)為后
*
*? @return 獲得時間
*/
- (NSDate *)getPriousorLaterDateFromDate:(NSDate *)date withMonth:(NSInteger)month
{
[self.comps setMonth:month];
NSDate *mDate = [self.calender dateByAddingComponents:self.comps toDate:date options:0];
return mDate;
}
/**
*? 根據(jù)時間獲取周幾
*
*? @param inputDate 輸入?yún)?shù)是NSDate,
*
*? @return 輸出結(jié)果是星期幾的字符串计寇。
*/
- (NSString*)weekdayStringFromDate:(NSDate*)inputDate {
[self.calender setTimeZone: self.timeZone];
NSCalendarUnit calendarUnit = NSCalendarUnitWeekday;
NSDateComponents *theComponents = [self.calender components:calendarUnit fromDate:inputDate];
return [self.weekdays objectAtIndex:theComponents.weekday];
}
/**
*? 獲取第N個月的時間
*
*? @param currentDate 當(dāng)前時間
*? @param index 第幾個月 正數(shù)為前? 負(fù)數(shù)為后
*
*? @return @“2016年3月”
*/
- (NSArray*)timeString:(NSDate*)currentDate many:(NSInteger)index;
{
NSDate *getDate =[self getPriousorLaterDateFromDate:currentDate withMonth:index];
NSString? *str =? [self.formatter stringFromDate:getDate];
return [str componentsSeparatedByString:@"-"];
}
/**
*? 根據(jù)時間獲取第一天周幾
*
*? @param dateStr 時間
*
*? @return 周幾
*/
- (NSString*)getMonthBeginAndEndWith:(NSDate *)dateStr{
double interval = 0;
NSDate *beginDate = nil;
NSDate *endDate = nil;
NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar setFirstWeekday:2];//設(shè)定周一為周首日
BOOL ok = [calendar rangeOfUnit:NSCalendarUnitMonth startDate:&beginDate interval:&interval forDate:dateStr];
//分別修改為 NSDayCalendarUnit NSWeekCalendarUnit NSYearCalendarUnit
if (ok) {
endDate = [beginDate dateByAddingTimeInterval:interval-1];
}else {
return @"";
}
return? [self weekdayStringFromDate:beginDate];
}
#pragma mark ---
#pragma mark --- 初始化
- (NSTimeZone*)timeZone
{
if (_timeZone == nil) {
[UIColor blueColor];
_timeZone = [[NSTimeZone alloc] initWithName:@"Asia/Shanghai"];
}
return _timeZone;
}
- (NSArray*)weekdays
{
if (_weekdays == nil) {
_weekdays = [NSArray arrayWithObjects: [NSNull null], @"0", @"1", @"2", @"3", @"4", @"5", @"6", nil];
}
return _weekdays;
}
- (NSCalendar*)calender
{
if (_calender == nil) {
_calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
}
return _calender;
}
- (NSDateComponents*)comps
{
if (_comps == nil) {
_comps = [[NSDateComponents alloc] init];
}
return _comps;
}
- (NSDateFormatter*)formatter
{
if (_formatter == nil) {
_formatter =[[NSDateFormatter alloc]init];
[_formatter setDateFormat:@"yyyy-MM-dd"];
}
return _formatter;
}