Problema com WEEK_OF_YEAR dentro de cada mês

9 respostas
F

Pessoal, gostaria apenas de uma dica de como elaborar o seguinte: Preciso saber quais os números da semanas (WEEK_OF_YEAR) que estão dentro de determinado mês, por exemplo:

Janeiro
1
2
3
4
5
6

Agosto
32
33
34
35
36
37

Alguma sugestão?

9 Respostas

J

A classe Calendar tem o método calendar.WEEK_OF_YEAR

isso resolve?

rogelgarcia

Basicamente…

Crie um Map<Mes, Set> (nao precisa ser uma classe Mes e Semana… pode ser um int… mas é só pra indicar… que a chave é mes e a lista é de semanas)

Percorra todos os dias do ano

Para cada dia… verifique o mes… e qual semana…

Adicione no mapa… na chave do mes encontrado… um item na lista… que é a semana encontrada

Pronto… vc tem um mapa… com os meses e semanas

Deve ter um algorítmo de melhor performance… mas acho que esse resolve seu problema

F

Rogel, obrigado pela ajuda, mas neste meio tempo eu tive uma idéia que eu não sei também se é ou não o algoritmo mais otimizado mas PARECE ter resolvido meu problema, ainda preciso testar ele na explorer tree para ver se terá o efeito que eu desejo, mas basicamente o que eu fiz foi o seguinte:

Para cada Mês eu peguei o primeiro e último dia deste Mês e seus WEEK_OF_YEAR correspondentes, e então podemos assumir que as semanas neste intervalo INCLUSIVE elas, fazem parte daquele mês, desta forma eu consigo saber quais semana pertencem a cada mês.

Agora eu estou me deparando com um outro problema um pouquinho mais complicado, meu cenário é o seguinte:

  • Quero desenvolver um calendário em forma de árvore onde os nós pai seja o ano escolhido na etapa anterior, seus filhos serão os meses (até aqui tudo bem pois os meses nunca mudam), seus netos serão as semanas do ano e os bisnetos serão os dias (data), exemplo:

2010
Janeiro
Semana 01
01/01/2010
02/01/2010
Semana 02
03/01/2010
04/01/2010
05/01/2010
06/01/2010
07/01/2010
08/01/2010
09/01/2010


Maio
     Semana 18
          01/01/2010
     Semana 19
          02/01/2010
          03/01/2010
          04/01/2010
          05/01/2010
          06/01/2010
          07/01/2010
          08/01/2010

Portanto preciso saber: a qual mês determinada semana pertence (dúvida inicial do tópico), após isto preciso saber quais são as datas pertencentes à esta semana (dúvida atual).

No final terei uma árvore onde quando o nó ano é explodido aparecem os meses, quando esses são explodidos aparecem as semanas e quando essas são explodidas aparecem os dias.

Desde já, agradeço a ajuda do pessoal do GUJ.

Abraço

rogelgarcia

É isso aí… o seu algorítmo é bem melhor

Ainda tem que ser eficiente pra montar os dias?

Pq se nao… vc pode percorrer os dias todos mesmo


Eu realmente quero percorrer os dias… ahhahha

F

Eu tive a mesma idéia mas achei um pouco estranho fazer isso, deve ter uma idéia melhor, vamos ver se alguém nos da uma idéia um pouco melhor, na pior das hipóteses eu faço isso mesmo, vai prejudicar a performance mas acho que muito pouco.

rogelgarcia

Para ser performatico… vc pode manter o primeiro dia do mes… que vc já achou

E fazer uma matemática com ele… para saber até que dia vai essa semana…

E calcula os dias das outras semanas… somando 7 até a ultima semana

Que vc faz uma matematica com o ultimo dia…

rogelgarcia

Se o dia 1/1 por exemplo

For o DAY_OF_WEEK 0

vc vai de 0 até 7 (exclusivamente)
7 - 0 = 7 dias
Essa semana terá os dias 1,2,3,4,5,6,7

Se for o DAY_OF_WEEK 4

vc vai de 4 até 7 (exclusivamente)
7 - 4 = 3 dias
Essa semana terá os dias 1,2,3

isso na primeira semana…

Pras semanas intermediarias vc tem 7 dias em todas

Pra calcular na ultima semana é mais ou menos a mesma coisa…da primeira semana…

Tem que pensar mais detalhadamente no algoritmo mas acho que é por aí…

F

Vc está tomando a data como parâmetro para achar a semana, o meu problema é o contrário, eu tenho a semana e preciso achar as datas que pertencem a ela.

rogelgarcia

Então… mas vc já nao tinha achado a data pra achar quais as semanas do mes?

É só vc nao jogar as datas foram… ou achar elas denovo… para preencher as semanas…

Vai gastar uma engenharia no código… pq o raciocinio é meio ao contrario mesmo…

Criado 3 de março de 2010
Ultima resposta 4 de mar. de 2010
Respostas 9
Participantes 3