How to compare two NSDate objects in objective C

后端 未结 6 1973
隐瞒了意图╮
隐瞒了意图╮ 2020-11-30 00:51

I have objects of Date type.

I want to compare them, and I have written an if condition in the following way:

if (([startDate1 isEqualToDate:[self g         


        
6条回答
  •  生来不讨喜
    2020-11-30 01:06

    Easy way to compare NSDates (found here http://webd.fr/637-comparer-deux-nsdate):

    #import 
    
    @interface NSDate (Compare)
    
    -(BOOL) isLaterThanOrEqualTo:(NSDate*)date;
    -(BOOL) isEarlierThanOrEqualTo:(NSDate*)date;
    -(BOOL) isLaterThan:(NSDate*)date;
    -(BOOL) isEarlierThan:(NSDate*)date;
    //- (BOOL)isEqualToDate:(NSDate *)date; already part of the NSDate API
    
    @end
    

    And the implementation:

    #import "NSDate+Compare.h"
    
    @implementation NSDate (Compare)
    
    -(BOOL) isLaterThanOrEqualTo:(NSDate*)date {
        return !([self compare:date] == NSOrderedAscending);
    }
    
    -(BOOL) isEarlierThanOrEqualTo:(NSDate*)date {
        return !([self compare:date] == NSOrderedDescending);
    }
    -(BOOL) isLaterThan:(NSDate*)date {
        return ([self compare:date] == NSOrderedDescending);
    
    }
    -(BOOL) isEarlierThan:(NSDate*)date {
        return ([self compare:date] == NSOrderedAscending);
    }
    
    @end
    

    Simple to use:

    if([aDateYouWant ToCompare isEarlierThanOrEqualTo:[NSDate date]]) // [NSDate date] is now
    {
        // do your thing ...
    }
    

    Enjoy

提交回复
热议问题