Ios NSDate月差

Ios NSDate月差,ios,nsdate,Ios,Nsdate,我面临一个问题。我正在从用户处获取开始日期和结束日期。我在UI中显示这些月份 第一个问题:如果用户给出了同一个月的不同日期(如2013-01-10和2013-01-25),而我试图得到当时两个日期的差值,则月差显示为零个月。如何获得月差,包括开始日期月和结束日期月 第二个问题:如果用户给出不同的日期,如2013-01-29和2013-02-01,它仍然给我零月差。如何克服这两个问题?在这两种情况下,我得到的结果都是一样的。我如何区分 谢谢。您可以在Github上查看此项目: 即使您不能使用整个

我面临一个问题。我正在从用户处获取开始日期和结束日期。我在UI中显示这些月份

第一个问题:如果用户给出了同一个月的不同日期(如2013-01-10和2013-01-25),而我试图得到当时两个日期的差值,则月差显示为零个月。如何获得月差,包括开始日期月和结束日期月

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


谢谢。

您可以在Github上查看此项目:

即使您不能使用整个库,您也可以查看使其发生的代码。有一种方法正是您所需要的:

- (NSInteger)mt_monthsSinceDate:(NSDate *)date;

你可以试试这个

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);

你能给我们看一下你的密码吗?对不起,我不能。违反了公司规定。所以…如果你不能发布密码,你不应该在这里问。或者,你可以写一两行来说明这个想法。