2014-02-19 1 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]; Пожалуйста, измените имя метода, чтобы оно было более читаемым (при необходимости). –

Смежные вопросы