2014-02-19 87 views
0

我做了一个代码来使用两个不同的日期选择器找到两个日期之间的差异。我无法找到两个日期之间的差异。两个日期的差别总是为零。如何通过使用两个不同的日期选择器找到两个日期之间的差异

@property (strong, nonatomic) IBOutlet UILabel *date1; 
@property (strong, nonatomic) IBOutlet UILabel *date2; 
- (IBAction)cale1:(id)sender; 
- (IBAction)cale2:(id)sender; 
@property (strong, nonatomic) IBOutlet UIDatePicker *datePicker1; 
@property (strong, nonatomic) IBOutlet UIDatePicker *datePicker2; 
@property NSDate *d1,*d2; 

@implementation ViewController 

- (IBAction)cale1:(id)sender { 
    NSDateFormatter *dc=[[NSDateFormatter alloc]init]; 
    dc.dateStyle=NSDateFormatterFullStyle; 
    _d1=_datePicker1.date; 
    _date1.text=[dc stringFromDate:_datePicker1.date]; 
    NSLog(@"Date %@",_date1); 
} 

- (IBAction)cale2:(id)sender { 
    NSDateFormatter *dc=[[NSDateFormatter alloc]init]; 
    dc.dateStyle=NSDateFormatterFullStyle; 
    _d2=_datePicker2.date; 
    _date2.text=[dc stringFromDate:_datePicker2.date]; 
    NSLog(@"Date %@",_d2); 

    [self isSameDay:_d1 otherDay:_d2]; 

} 
-(BOOL)isSameDay:(NSDate *)date1 otherDay:(NSDate *)date2{ 
    NSCalendar *cale=[NSCalendar currentCalendar]; 
    unsigned unitFlags=NSYearCalendarUnit| NSMonthCalendarUnit| NSDayCalendarUnit; 
    NSDateComponents *comp1=[cale components:unitFlags fromDate:date1]; 
    NSDateComponents *comp2=[cale components:unitFlags fromDate:date2]; 


    // NSString *comp=[NSString stringWithFormat:@"%d", [comp1 day]==[comp2 day]&&[comp1 month]==[comp2 month]&&[comp1 year]==[comp2 year]]; 
    BOOL a=[comp1 day]==[comp2 day]&&[comp1 month]==[comp2 month]&&[comp1 year]==[comp2 year]; 

    NSLog(@"Date Differ%hhd",a); 
    return a; 
} 
+0

阅读此项。 [NSCalendar类参考](https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSCalendar_Class/Reference/NSCalendar.html)。向下滚动到'components:fromDate:toDate:options:' – Desdenova

回答

0

比较方法有效日期中的日期是?

如果他们是你可以这样做:如果日期是不一样的

BOOL difference = [date1 timeIntervalSinceDate:date2] > 0; 

差异将是真实的。 timeIntervalSinceDate返回NSTimeInterval这是:

用于指定时间间隔,以秒为单位。

+0

我希望在数字上有所不同。如果它从第一个日期到结束日期有4天差异。我需要的结果是4. – MAHBOOB

+1

那不是你的代码试图做什么.. – CW0007007

+0

如何使上面的代码适用于我问过的问题。 – MAHBOOB

0

为了比较两个日期,你需要使用NSDateComponents.I修改你的函数“isSameDay”。它返回两个日期之间的日差数。

-(int)isSameDay:(NSDate *)date1 otherDay:(NSDate *)date2 
{  
    NSDateComponents *components; 

    int days; 

    components = [[NSCalendar currentCalendar] components: NSDayCalendarUnit 
              fromDate: date1 toDate: date2 options: 0]; 
    days = (int) [components day]; 

    NSLog(@"days %d",abs(days)); 

    return days; 

} 
+0

您的方法签名和方法主体不匹配 – Marc

+0

我忘记指定更改调用“isSameDay”方法。请按以下方式致电。 ind numberofdifference = [self isSameDay:_d1 otherDay:_d2];请更改方法名称,以便它更具可读性(如果需要)。 –