-2

我面临一个问题。我正在从用户那里获取开始日期和结束日期。我在 UI 中显示了那几个月。

第一个问题:如果用户给出了同一个月的不同日期(如 2013-01-10 和 2013-01-25)并且我尝试获取当时两个日期的差异,则月差显示为零月. 如何获得包括开始日期月份和结束日期月份在内的月份差异?

第二个问题:如果用户给出不同的日期,如 2013-01-29 和 2013-02-01,它仍然给我零月差。我怎样才能克服这两个问题?在这两种情况下,我都会得到相同的结果。我该如何区分?

谢谢。

4

2 回答 2

4

你可以试试这个

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);
于 2013-06-10T10:03:45.883 回答
0

你可以在 Github 上看看这个项目:

MTDates NSDate 类别

即使您不能使用整个库,您也可以查看实现它的代码。有一种方法应该正是您所需要的:

- (NSInteger)mt_monthsSinceDate:(NSDate *)date;
于 2013-06-10T09:52:56.157 回答