Frage

Wie kann ich erster und letzter Tag der aktuellen Woche? Was ich brauche, ist eine Möglichkeit, eine Reihe von Objekten mit NSDate Eigenschaft der Filterung nur diejenigen zu verlassen, die auf aktuelle Woche erscheinen, und sie dann nach Tagen filtern. Auch brauche ich einen Weg lokalisierte Tagesnamen zu erhalten.

Ich habe versucht, mit NSCalendar, NSDate und NSDateComponents zu spielen, aber es scheint, dass ich nicht nur firstWeekday Kalender überprüfen, da es Wochen mit Tagen vom vorherigen / nächsten Monat sein könnte.

War es hilfreich?

Lösung 2

Ok, hier geht es, einen Python-Schnipsel, die die Arbeit erledigt

def daySec(diff):
    return 60*60*24*diff

def weekDays(dt=None):
    if not dt:
        dt = NSDate.date() # use today
    cal = NSCalendar.currentCalendar()
    dc = cal.components_fromDate_(NSWeekdayCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit, dt)
    normDt = cal.dateFromComponents_(dc) # get the day-rounded date
    shift = dc.weekday() - cal.firstWeekday()
    firstDt = normDt.dateByAddingTimeInterval_(daySec(-shift))
    lastDt = normDt.dateByAddingTimeInterval_(daySec(-shift+7)) # up to next week's first day midnight
    return (firstDt, lastDt)

Andere Tipps

Verwenden NSDateComponents den Wochentag zu erhalten, die von 1 für Sonntag bis 7 ist.

Wenn Sie die Wochentag-Nummer haben, berechnen Sie den Unterschied zwischen ihm und dem ersten Tag der Woche. Zum Beispiel, wenn Sie Montag (2) betrachten der erste Tag sein, dann, wie früher viele Tage waren es (oder wäre es). Wenn der Wochentag 4 (Mi), dann ist der Unterschied 2. Das bedeutet, dass, wenn Sie zwei Tage nach dem ursprünglichen Datum subtrahieren, werden Sie den ersten Tag der Woche bekommen, dass es liegt in.

Überprüfen Sie die Dokumentation zu , weil man mit der Tatsache umgehen müssen, dass diese Aufgabe auch Zeit Attribute enthalten. Wenn Sie können, stellen Sie sicher, dass die Zeitwerte sind immer Null, wenn Sie nur daran interessiert, Termine und aktuelle Vergleiche sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top