Сравнивайте объекты NSDate только по годам, месяцам, дням - PullRequest
2 голосов
/ 08 августа 2010

Если я хочу использовать метод сравнения для сравнения двух дней:

[day1 compare:day2] == NSOrderedAscending

Как сравнивать только по году-месяцу-дню?

Ответы [ 2 ]

4 голосов
/ 08 августа 2010

В дне 86400 секунд, поэтому, если вы получите количество секунд с контрольной даты для обеих дат, вы можете разделить их на 86400 и сравнить два числа.

Это даст вам (в days1 и days2) количество дней для дат, прошедших с 1 января ст , 1970. Затем вы можете сравнить их.

int days1 = [date1 timeIntervalSince1970] / 86400;
int days2 = [date2 timeIntervalSince1970] / 86400;
0 голосов
/ 28 февраля 2012

В идеале вы хотели бы написать что-то вроде:

if ([date1 isSameDayAs:date2]) {...}

Вы можете достичь этого с помощью простой категории на NSDate, например:

@implementation NSDate (Extensions)
- (BOOL) isSameDayAs:(NSDate *)date2
{
    int days1 = [self  timeIntervalSince1970] / 86400;
    int days2 = [date2 timeIntervalSince1970] / 86400;
    return (days1 == days2);
}
@end
...