如何计算未来日期之前的天数?

时间:2011-10-09 18:56:51

标签: objective-c

有些事情没有加起来。

我需要知道在2012年12月21日之前有多少天

NSDateFormatter *df= [[NSDateFormatter alloc] init];

NSDate *today = [[NSDate alloc] initWithTimeIntervalSinceNow:0];
NSDate *dec21 = [[NSDate alloc] init]; 

dec21 = [df dateFromString:@"2012-12-21"];

NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];


NSUInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit;

NSDateComponents *components = [gregorian components:unitFlags
                                            fromDate:today
                                              toDate:dec21 options:0];
NSInteger days = [components day];
NSInteger months = [components month];

NSString *result = [[NSString alloc] initWithFormat:@"About %d months and %d days left", months, days];

此代码表明仍有129个月。

我缺少什么?

1 个答案:

答案 0 :(得分:0)

您的日期格式化程序没有格式设置,因此它不会返回12月21日的NSDate。创建格式化程序后添加以下行:

df.dateFormat = @"yyyy-MM-dd";

你已经确定了,直到你的下一个问题,结果现在说:

  

大约2个月零11天

您还需要包括这些年份,并将其添加到月份数字中,以便在您只计算数月和数天的情况下获得实际剩余时间。