我制作了一个小程序来计算两个日期之间的差异,并输出天数和过去几个月。该程序分别显示月数和罚款天数。但是,当我在一个标志中将它们连接在一起时,输出只显示正确的月数,并且无论我投入的日期是什么天数都是“12”。我也尝试过内联{{1} }),但同样的问题发生。这是我的代码。非常感谢您的帮助!
components: (NSDayCalendarUnit|NSMonthCalendarUnit
输出:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSDate *startDate=[NSDate dateWithString:@"2004-2-24 1:54:10 +0600"];
NSDate *today=[NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger flags = NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *components = [gregorian components: flags fromDate:startDate toDate:today options:0];
NSInteger days = [components day];
NSInteger months = [components month];
NSLog(@"%li",(long)days);
NSLog(@"%li",(long)months);
}
return 0;
}
答案 0 :(得分:1)
你确定吗?当我使用无论我投入什么日期,输出只显示天数“12”。
startDate
@"2013-4-30 1:54:10 +0600"
时,我看到days
为6,months
为0.您的代码看起来很好。
修改的
以下是比较2个日期“日期”的方法,无论它们是在同一个月还是同一年。
NSCalendar* gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar] ;
NSDate* startDate = [NSDate dateWithString:@"2013-4-18 1:54:10 +0600"] ;
NSDate* today = [NSDate dateWithString:@"2013-5-05 1:54:10 +0600"] ;
NSDateComponents* startDateComponents = [gregorian components:NSDayCalendarUnit fromDate:startDate] ;
NSDateComponents* todayComponents = [gregorian components:NSDayCalendarUnit fromDate:today] ;
int daysApart = fabs(startDateComponents.day - todayComponents.day) ;