Index: src/OFDate.h ================================================================== --- src/OFDate.h +++ src/OFDate.h @@ -156,6 +156,18 @@ * * \param fmt The format for the date string * \return A new, autoreleased OFString */ - (OFString*)localDateStringWithFormat: (OFString*)fmt; + +/** + * \param date Another date + * \return The earlier date of the two dates + */ +- (OFDate*)earlierDate: (OFDate*)date; + +/** + * \param date Another date + * \return The later date of the two dates + */ +- (OFDate*)laterDate: (OFDate*)date; @end Index: src/OFDate.m ================================================================== --- src/OFDate.m +++ src/OFDate.m @@ -344,6 +344,22 @@ return [OFString stringWithCString: buf]; } @finally { [self freeMemory: buf]; } } + +- (OFDate*)earlierDate: (OFDate*)date +{ + if ([self compare: date] == OF_ORDERED_DESCENDING) + return [[date retain] autorelease]; + + return [[self retain] autorelease]; +} + +- (OFDate*)laterDate: (OFDate*)date +{ + if ([self compare: date] == OF_ORDERED_ASCENDING) + return [[date retain] autorelease]; + + return [[self retain] autorelease]; +} @end Index: tests/OFDateTests.m ================================================================== --- tests/OFDateTests.m +++ tests/OFDateTests.m @@ -59,9 +59,13 @@ TEST(@"-[year]", [d1 year] == 1970 && [d2 year] == 1970) TEST(@"-[dayOfWeek]", [d1 dayOfWeek] == 4 && [d2 dayOfWeek] == 5) TEST(@"-[dayOfYear]", [d1 dayOfYear] == 1 && [d2 dayOfYear] == 2) + + TEST(@"-[earlierDate:]", [[d1 earlierDate: d2] isEqual: d1]) + + TEST(@"-[laterDate:]", [[d1 laterDate: d2] isEqual: d2]) [pool drain]; } @end