2014-02-19 3 views
0

두 개의 다른 날짜 선택 도구를 사용하여 두 날짜의 차이를 찾기위한 코드를 만들었습니다. 두 날짜의 차이점을 찾을 수 없었습니다. 두 날짜의 차이는 항상 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; 

차이가 true가됩니다. timeIntervalSinceDate은 다음과 같은 NSTimeInterval을 반환합니다.

시간 간격을 초 단위로 지정하는 데 사용됩니다.

+0

숫자의 차이를 원합니다. 첫 번째 날짜에서 종료 날짜까지의 4 일 차이가있는 경우 결과가 4가되어야합니다. – MAHBOOB

+1

그게 아니라 코드가하려고하는 .. – CW0007007

+0

위의 코드는 내가 물었던 질문에 대해 어떻게 작동하게 만드는지. – MAHBOOB

0

두 날짜를 비교하려면 NSDateComponents를 사용해야합니다. "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 = [자기 isSameDay : _d1 otherDay : _d2]; 메서드 이름을 더 읽기 쉽도록 변경하십시오 (필요한 경우). –

관련 문제