NSDate – Ermitteln des Wochentages mit nur einer Zeile Code (ohne NSDateFormatter!)

Von am 10.10.2011 | One Comment

Problem: Arbeitet man mit NSDate-Objekten muss man immer wieder diverse Spezifikationen eines Datums ermitteln. Eines der (von mir) oft genutzen attribute ist der Wochentag (weekday).
In den meisten Foren/Blogs ist der vorgeschlagene Lösungsansatz:
- Nutze NSDateFormatter, generiere dir einen NSString aus einem Datum und fange mit einer IF/ELSE Orgie das zurcükgelieferte kürzel ab.

Bei sowas stellen sich mir die Nackenhaare auf!

Lösung: Das ganze lässt sich auch sehr elegant über nur eine Zeile abbilden:

int myWeekday = [[[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:myNsDateObject] weekday];
NSLog(@"myWeekday: %i", myWeekday); // Sunday returns 0

Wichtig ist, wie ich auch schon im Code kommentiert habe, dass Sonntag 0 zurückliefert. Nicht Montag!

Ich hoffe euch gefällt der Einzeiler so gut wie mir ;)

  • Asdfasdf

    lt. Doku ist Sonntag=1, NICHT =0!!!
    Weekday units are the numbers 1 through n, where n is the number of days in the week. For example, in the Gregorian calendar, n is 7 and Sunday is represented by 1.