根据当前时间获得某个时间
#pragma mark -
- (NSDictionary *)getCuttentDayPeriod {
NSDate *date = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [calendar components: NSEraCalendarUnit |NSYearCalendarUnit | NSMonthCalendarUnit| NSDayCalendarUnit| NSHourCalendarUnit fromDate: date];
[comps setHour:8];
NSDate *beginDate = [calendar dateFromComponents:comps];
NSDate *endDate = [beginDate dateByAddingTimeInterval:3600*24];
NSDictionary *dct = [[NSDictionary alloc] initWithObjects:@[beginDate, endDate] forKeys:@[@"beginDate", @"endDate"]];
return dct;
}
beginDate 为当天0时0分
endDate 为当天24时
[comps setHour:8];
理由系调整时差
- (NSDictionary *)getCuttentWeekPeriod {
NSDate *date = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitWeekday | NSCalendarUnitWeekOfYear fromDate: date];
[comps setHour:8];
[comps setWeekday:2];
NSDate *beginDate = [calendar dateFromComponents:comps];
NSDate *endDate = [beginDate dateByAddingTimeInterval:3600*24*7];
NSDictionary *dct = [[NSDictionary alloc] initWithObjects:@[beginDate, endDate] forKeys:@[@"beginDate", @"endDate"]];
return dct;
}
beginDate 为当周星期一0时0分
endDate 为下周星期一0时0分
[comps setWeekday:2];
理由系 comps 一周的开始是从星期天开始
- (NSDictionary *)getCuttentMonthPeriod {
NSDate *date = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [calendar components: NSEraCalendarUnit |NSYearCalendarUnit | NSMonthCalendarUnit fromDate: date];
[comps setHour:8];
NSDate *beginDate = [calendar dateFromComponents:comps];
if (comps.month==12) {
[comps setYear:++comps.year];
[comps setMonth:1];
} else {
[comps setMonth:++comps.month];
}
NSDate *endDate = [calendar dateFromComponents:comps];
NSDictionary *dct = [[NSDictionary alloc] initWithObjects:@[beginDate, endDate] forKeys:@[@"beginDate", @"endDate"]];
return dct;
}
beginDate 为当月第一天0时0分
endDate 为下一个月第一天0时0分
- (NSDictionary *)getCuttentYearPeriod {
NSDate *date = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [calendar components:NSCalendarUnitYear| NSMonthCalendarUnit fromDate: date];
[comps setMonth:1];
[comps setHour:8];
NSDate *beginDate = [calendar dateFromComponents:comps];
[comps setYear:comps.year+1];
NSDate *endDate = [calendar dateFromComponents:comps];
NSDictionary *dct = [[NSDictionary alloc] initWithObjects:@[beginDate, endDate] forKeys:@[@"beginDate", @"endDate"]];
return dct;
}
beginDate 为当年第一天0时0分
endDate 为下一年第一天0时0分
参考:
http://kyfxbl.iteye.com/blog/2098193
http://nshipster.cn/nscalendar-additions/ (NSCalendar Additions)