2012-01-05 11 views

Odpowiedz

86

Spróbuj tego:

if ([someDate timeIntervalSinceNow] < 0.0) { 
    // Date has passed 
} 
+13

kładę, że do metody kategorii, dzięki czemu można używać 'someDate.isInPast'. –

+0

Twój kod porównuje tylko datę, a nie godzinę. Porównywuję ten sam dzień, ale w innym czasie: 01.01.2015 5:00:00 i 01.01.2015 7:00:00 z tą datą pokazuje mi, że data minęła. – Daddy

+1

+ Tatuś, nie jestem pewien, co masz na myśli. Zgodnie z dokumentacją ta metoda powinna być idealna: "Odstęp czasowy między obiektem daty a bieżącą datą i czasem. (Tylko do odczytu) Jeśli obiekt daty jest wcześniejszy niż bieżąca data i godzina, wartość tej właściwości jest ujemna." –

3

Można użyć

[NSDate date]; 

aby uzyskać obiekt NSDate reprezentujących aktualny czas i datę.

następnie porównać, że do dnia jesteś analizy, na przykład:

if ([currentDate timeIntervalSince1970] > [yourDate timeIntervalSince1970]) { 
// yourDate is in the past 
} 

można to wykorzystać, aby porównać dwoma datami. Mam nadzieję że to pomoże.

+1

lub zrobić go inline: ([[ Data NSDate] timeIntervalSince1970]> [yourDate timeIntervalSince1970]) –

+0

Po prostu dostarczałem bardziej ogólne rozwiązanie dla porównywania dat - porównywanie daty z teraz jest raczej przypadkiem niszowym. W praktyce jednak prawdopodobnie użyjesz timeIntervalSinceNow w tym konkretnym scenariuszu. –

6

musisz użyć porównania NSDate, wiele odpowiedzi tutaj pomoże.

iOS: Compare two dates

logika będzie potrzebował szczypanie, ale to powinno cię we właściwym kierunku:

- (BOOL)date:(NSDate*)date isBefore:(BOOL)before otherDate:(NSDate*)otherDate ; 
{ 
    if(before && ([date compare:otherDate] == NSOrderedAscending)) 
     return YES; 
    if (!before && ([date compare:otherDate] == NSOrderedDescending)) 
     return YES; 
} 

Wykorzystanie:

if([self date:yourDate isBefore:YES otherDate:[NSDate date]]) 
+4

W notce w stylu kodowania: twój drugi parametr powinien naprawdę mieć nazwę 'isBefore:'. Odczytanie głośnej "date: X isBefore: YES/NO otherDate: Y" brzmi o wiele lepiej IMO niż "date: X to: YES/NO otherDate: Y". – Taum

Powiązane problemy