Pergunta

Como posso obter primeiro e último dias da semana atual? O que eu preciso é uma maneira de filtrar um conjunto de objetos com NSDate propriedade para deixar únicos, que aparecem na semana em curso, e depois filtrá-los por dias. Também eu preciso de alguma maneira de obter nomes de dia localizadas.

Eu tentei jogar com NSCalendar, NSDate e NSDateComponents, mas parece que eu não posso simplesmente verificar primeiro_dia_semana do calendário, como pode haver semanas com dias de anterior próximo mês /.

Foi útil?

Solução 2

Ok, aqui vai um trecho de python que faz o trabalho

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)

Outras dicas

Use NSDateComponents para obter o dia da semana, que é de 1 para domingo a 7.

Assim que tiver o número de semana, calcule a diferença entre ele e seu primeiro dia da semana. Por exemplo, se você considerar segunda-feira (2) para ser o primeiro dia, então quantos dias mais cedo foi (ou seria). Se o dia da semana é de 4 (quarta-feira), em seguida, a diferença é 2. Isso significa que se você subtrair dois dias a partir da data original, você vai ter o primeiro dia da semana em que ela se encontra em.

Verifique a href="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/DatesAndTimes/DatesAndTimes.html" rel="nofollow documentação para detalhes , porque você terá que lidar com o fato de que estes objetos também incluem atributos de tempo. Se você pode, certifique-se de que os valores de tempo são sempre zero quando você está interessado apenas em datas e comparações de data.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top