输入参数是具体当年元旦的第几天,返回结果是当年的具体日期
因为不允许反馈未来的时间,而且有可能查询的日期是去年的
(允许返回未来一个月的日期,否则如果天数大于当前日期距离元旦的天数大于一个月,就返回去年的日期,因为有的时候,刚过新年,却想查询去年年底的日期)
- (NSString *)getDateStringFromDayNum:(NSInteger)days {
days -= 1;
if (days < 1 || days > 366) {
NSLog(@"invalid date num");
return nil;
}
//获取当前日期
NSDate *now = [NSDate date];
//获取当年元旦的日期
NSDateFormatter *dateFormator = [[NSDateFormatter alloc]init];
[dateFormator setDateFormat:@"yyyy"];
NSString *currentYearFirstDayStr = [NSString stringWithFormat:@"%@-01-01",[dateFormator stringFromDate:now]];
[dateFormator setDateFormat:@"yyyy-MM-dd"];
NSDate *currentYearFirstDate = [dateFormator dateFromString:currentYearFirstDayStr];
//获取今年已经过去了几天
long dayPast = (long)[now timeIntervalSinceDate:currentYearFirstDate]/3600/24;
if (days - dayPast > 31) { //只能输出未来一个月的日期,否则则认为是去年的时间
//去年
NSInteger lastYear = [[dateFormator stringFromDate:now] integerValue] - 1;
NSString *lastYearFirstDayStr = [NSString stringWithFormat:@"%ld-01-01",(long)lastYear];
NSDate *lastYearFirstDate = [dateFormator dateFromString:lastYearFirstDayStr];
NSDate *returnDay = [NSDate dateWithTimeInterval:days * 24 * 3600 sinceDate:lastYearFirstDate];
return [dateFormator stringFromDate:returnDay];
} else {
//今年
NSDate *returnDay = [NSDate dateWithTimeInterval:days * 24 * 3600 sinceDate:currentYearFirstDate];
return [dateFormator stringFromDate:returnDay];
}
}