这是我的代码,它完美地返回两个日期之间的天数和月数。我希望验证这一点,因为两个日期之间的差异应该恰好是一年。就像你选择2013年7月29日作为开始日期和2014年7月30日结束日期一样,不应该允许执行更多日期。请提前帮助感谢。< / p>
NSString *sta = txtStartdate.text; // This is the start date
NSString *en = txtEnddate.text; //this is end date
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"dd/MM/yyyy"];
NSDate *startDat = [f dateFromString:sta];
NSDate *endDat = [f dateFromString:en];
[f release];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit | NSYearCalendarUnit ;
NSDateComponents *components = [gregorian components:unitFlags
fromDate:startDat
toDate:endDat options:0];
NSInteger months = [components month];
NSInteger days = [components day];
NSInteger years = [components year];
NSLog(@"Number of months %d",months);
NSLog(@"Number of days %d",days);
NSLog(@"Number of years %d",years);
[gregorian release];
if(years < 1 )// This code works fine...i've edited it.. @wain helped
{
//
}
答案 0 :(得分:1)
将NSYearCalendarUnit
添加到unitFlags
,然后当您获得components
后,您可以申请year
。这比处理数月和数天或计算结束日期更好地处理闰年(除非您使用组件在日期中添加一年以获得结束日期)。