Ottenere il primo e l'ultimo giorno della settimana in corso
-
06-07-2019 - |
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.
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.