Question

Comment puis-je obtenir les premier et dernier jours de la semaine en cours? Ce qu'il me faut, c'est un moyen de filtrer un ensemble d'objets avec la propriété NSDate pour n'en laisser que ceux qui apparaissent la semaine en cours, puis de les filtrer par jours. J'ai aussi besoin d'un moyen d'obtenir des noms de jour localisés.

J'ai essayé de jouer avec NSCalendar, NSDate et NSDateComponents, mais il semble que je ne puisse pas simplement vérifier le premier mercredi du calendrier, car il se peut qu'il y ait des semaines avec des jours précédents / le mois prochain.

Était-ce utile?

La solution 2

Ok, ça y est, un extrait de code Python qui fait le travail

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)

Autres conseils

Utilisez NSDateComponents pour obtenir le jour de la semaine, qui va de 1 pour dimanche à 7.

Une fois que vous avez le numéro du jour de la semaine, calculez la différence entre celui-ci et votre premier jour de la semaine. Par exemple, si vous considérez que lundi (2) est le premier jour, combien de jours plus tôt était-il (ou serait-il). Si le jour de la semaine est 4 (mercredi), la différence est égale à 2. Cela signifie que si vous soustrayez deux jours à la date d'origine, vous obtiendrez le premier jour de la semaine où il se trouve.

Consultez la documentation pour plus de détails . , car vous devrez tenir compte du fait que ces objets incluent également des attributs de temps. Si vous le pouvez, assurez-vous que les valeurs horaires sont toujours égales à zéro lorsque vous ne vous intéressez qu'aux dates et aux comparaisons de dates.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top