Domanda

Come posso ottenere il primo e l'ultimo giorno della settimana corrente? Ciò di cui ho bisogno è un modo per filtrare un insieme di oggetti con proprietà NSDate per lasciare solo quelli che compaiono nella settimana corrente e quindi filtrarli per giorni. Inoltre ho bisogno di un modo per ottenere i nomi dei giorni localizzati.

Ho provato a giocare con NSCalendar, NSDate e NSDateComponents, ma sembra che non riesca a controllare il primo giorno della settimana del calendario, poiché potrebbero esserci settimane con giorni del mese precedente / successivo.

È stato utile?

Soluzione 2

Ok, eccolo, uno snippet di pitone che fa il lavoro

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)

Altri suggerimenti

Utilizza NSDateComponents per ottenere il giorno della settimana, che è compreso tra 1 per domenica e 7.

Una volta che hai il numero del giorno della settimana, calcola la differenza tra esso e il tuo primo giorno della settimana. Ad esempio, se consideri il lunedì (2) il primo giorno, quanti giorni prima era (o sarebbe). Se il giorno della settimana è 4 (Mer), la differenza è 2. Ciò significa che se sottrai due giorni dalla data originale, otterrai il primo giorno della settimana in cui si trova.

Controlla la per i dettagli , poiché dovrai occuparti del fatto che questi oggetti includono anche attributi time. Se puoi, assicurati che i valori dell'ora siano sempre zero quando sei interessato solo a confronti di date e date.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top