2012-03-04 144 views
1

我正在尝试计算现在和用户定义的日期之间的时间间隔(以天为单位),以便结果在点击按钮时出现在标签中。2个NSDates之间的时间间隔

差异总是-4080我不确定我的方程有什么问题。 谢谢你的帮助

- (void)LabelChange2:(id)sender{ 
    NSDateFormatter *df3 = [[NSDateFormatter alloc] init]; 
    df3.dateStyle = NSDateFormatterMediumStyle; 
    labelDOB.text = [NSString stringWithFormat:@"%@", 
        [df3 stringFromDate:datepick.date]]; 
} 



    NSDate * df3 = [datePick date]; 
    NSCalendar *gregorian = [[NSCalendar alloc] 
          initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSDateComponents *comps = [gregorian components: NSDayCalendarUnit 
              fromDate: [NSDate date] 
              toDate: df3 
              options: 0]; 
    int days = [comps day]; 
    labelResult.text = [NSString stringWithFormat:@"%i", days]; 
+0

可能重复[如何确定从现在开始直到NSDate的天数?](http://stackoverflow.com/questions/7959243/how-to-tell-the-amount-of-days-from-现在一直到nsdate) – 2012-03-04 18:41:40

回答

3

你的代码工作正常。但是,如果我运行的代码datePick指针设置为nil我会从这段代码中得到-4080的答案。你应该检查你的连接UIDatePicker

+0

是的。 4080天前是2001年1月1日。这是NSDate的基础。所以一个无效日期将在4080天前产生。明天将是-4081 – 2012-03-04 19:17:04

+0

是的,当然,我怎么没有认出我的老朋友参考日期。这样的方法的明星︰'timeIntervalSinceReferenceDate'&'dateWithTimeIntervalSinceReferenceDate:' – NJones 2012-03-04 19:25:14

+0

@NJones,谢谢堆结果大写P在日期选择器 UIDatePicker * datePick; 而不是 property(nonatomic,retain)IBOutlet UIDatePicker * datepick; – MacUser 2012-03-05 05:07:25