Pergunta

Isso é um pouco estranho, mas é possível usar um NSCalendar (ou qualquer componente, para esse assunto) descobrir qual seria a data da próxima "primeira terça -feira do mês"?

Por exemplo, hoje é quinta -feira, 25 de março de 2010. A próxima "primeira terça -feira do mês" seria em 6 de abril. Da mesma forma, se eu estivesse procurando a próxima "primeira terça -feira do mês" em 1º de abril, ainda seria em 6 de abril.

Como você faria isso?

Muito obrigado !!!!!

Foi útil?

Solução

O código abaixo calcula a primeira terça -feira de uma determinada combinação mês/ano. Está escrito em Macruby Porque é com isso que eu apenas tentei, mas você não deve ter problemas para convertê-lo em objetivos adequados, é apenas uma sintaxe diferente (eu amo MacRuby para experimentar rapidamente uma ideia):

dc = NSDateComponents.alloc.init
# Set month to April 2010
dc.setYear 2010
dc.setMonth 4

dc.setWeekday 3 # 1 = Sunday, 2 = Monday, ...
dc.setWeekdayOrdinal 1 # We want the first weekday of the month

cal = NSCalendar.alloc.initWithCalendarIdentifier NSGregorianCalendar
date = cal.dateFromComponents dc
date.description # => "2010-04-06 00:00:00 +0200"

Deixo para você determinar a "próxima primeira terça -feira" a partir de uma determinada data: faça o cálculo para o mês da data atual primeiro e se o resultado estiver no passado, faça -o novamente no mês seguinte. Usar -[NSCalendar components:fromDate:] Para obter a combinação do mês/dia de um determinado nsdate.

Outras dicas

Infelizmente, não posso verificar a incapacidade deste código, mas alguns devem ficar assim:

NSDateComponents *components = [[NSDateComponents alloc] init];
[components setWeekday:2]; // Monday
[components setMonth:5]; // May
[components setYear:2008];
[components setWeekdayOrdinal:1]
NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:components];

Para amostras e informações detalhadas, veja isso guia

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