2009-02-24 8 views
11

Szukam dwóch zrobić dwie rzeczy:Jak sprawdzić, który dzień tygodnia jest (wtorek, piątek?) I porównać dwa NSDates?

  1. sprawdzić, czy tydzień minął (na podstawie dnia tygodnia)
  2. sprawdzić, czy dzień minął (na podstawie daty)

Nie jestem pewien, jaki jest najlepszy sposób na rozwiązanie tego problemu, ponieważ porównując dwa NSDates (jeden o 1/1/09 o 21:30 i drugi o 1/2/09 o 00:30), nie można zobaczyć, czy minęły 24 godziny, ponieważ w tym przypadku tak się nie stało. Mogę rozwiązać to przez uzyskanie daty 1/1/09 z NSDate, ale nie jestem pewien jak to zrobić na podstawie dokumentacji i linków google, które widziałem.

W drugim numerze nie wiem, jak ustalić dzień tygodnia, w którym podano datę. Chciałbym, jeśli 1/1/09 jest wtorek, poniedziałek, etc ... Czy istnieje biblioteka, która pozwala ci to obliczyć? To oczywiście musi brać pod uwagę lata przestępne i mnóstwo innych rzeczy ... Może jest na to biblioteka obiektywów c?

Dzięki za pomoc!

Odpowiedz

13

Można użyć NSDateComponents na to:

unsigned units = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; 
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *components = [gregorian components:units fromDate:date]; 

następnie można uzyskać dostęp do poszczególnych części daty tak:

[components year]; 
[components month]; 
[components day]; 

Albo można wybudować nowy obiekt NSDate użyciu NSCalendar „s dateFromComponents i porównaj dwa obiekty NSDate.

30

Można użyć components:fromData: wiadomość klasy NSCalendar aby poszczególne składniki Data:

// Sunday = 1, Saturday = 7 
int weekday = [[[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:theDate] weekday]; 

Aby porównać dwie daty, wystarczy użyć wiadomość compare::

switch([date1 compare:date2]) 
{ 
case NSOrderedSame:  /* they are the same date */ break; 
case NSOrderedAscending: /* date1 precedes date2 */ break; 
case NSOrderedDescending: /* date2 precedes date1 */ break; 
} 
Powiązane problemy