我面临一个问题。我正在从用户那里获取开始日期和结束日期。我在 UI 中显示了那几个月。
第一个问题:如果用户给出了同一个月的不同日期(如 2013-01-10 和 2013-01-25)并且我尝试获取当时两个日期的差异,则月差显示为零月. 如何获得包括开始日期月份和结束日期月份在内的月份差异?
第二个问题:如果用户给出不同的日期,如 2013-01-29 和 2013-02-01,它仍然给我零月差。我怎样才能克服这两个问题?在这两种情况下,我都会得到相同的结果。我该如何区分?
谢谢。
你可以试试这个
NSString *fromDateString = @"2013-01-10";
NSString *toDateString = @"2013-01-25";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSDate * fromDate = [formatter dateFromString:fromDateString];
NSDate *toDate = [formatter dateFromString:toDateString];
NSCalendar *calender = [NSCalendar currentCalendar];
NSUInteger units = (NSMonthCalendarUnit|NSDayCalendarUnit);
NSDateComponents *dateComponents = [calender components:units fromDate:fromDate toDate:toDate options:0];
NSString *duration = nil;
if (dateComponents.month) {
//Different months
duration = [NSString stringWithFormat:@"%d months",dateComponents.month];
}else{
//Same month
duration = [NSString stringWithFormat:@"%d days",dateComponents.day];
}
NSLog(@"Duration : %@",duration);
你可以在 Github 上看看这个项目:
即使您不能使用整个库,您也可以查看实现它的代码。有一种方法应该正是您所需要的:
- (NSInteger)mt_monthsSinceDate:(NSDate *)date;