Semana do Ano vindo errado

Estou usando uma função para retornar a semana do ano de uma determinada data, mas o valor retornado é sempre o correto +1.

O código:

GregorianCalendar calendar = new GregorianCalendar(); calendar.setTime( calendar.getTime() ); Integer valor = calendar.get(calendar.WEEK_OF_YEAR); System.out.println(valor.toString());

Por exemplo, meu Oracle diz que a semana do ano da data “2011-12-02” é “48”.
O meu código, se eu informar a mesma data, me retorna como “49”.

De fato o Oracle está correto, visto que, se eu colocar o último dia do ano “2011-12-31”, ele me retorna “53”, e o java me retorna “01”.

Alguém saberia me ajudar, ou me explicar esse comportamento?

Abr

 Integer valor = calendar.get(calendar.WEEK_OF_YEAR -1); 

Caro mauricionarcizo.

A solução proposta não é funcional, pois da forma que colocou não efetua o cálculo.
Mesmo que eu coloque na forma correta “Integer valor = calendar.get(calendar.WEEK_OF_YEAR) - 1;”, que é um POG, traria um resultado errado, pois no dia “31/12/2011”, ele me retorna “1”, e, logo subtraindo “-1” seria “0”.

Abr

se é 0 logo a semana será 52

[quote=mackson]Caro mauricionarcizo.

A solução proposta não é funcional, pois da forma que colocou não efetua o cálculo.
Mesmo que eu coloque na forma correta “Integer valor = calendar.get(calendar.WEEK_OF_YEAR) - 1;”, que é um POG, traria um resultado errado, pois no dia “31/12/2011”, ele me retorna “1”, e, logo subtraindo “-1” seria “0”.

Abr[/quote]

ele esta certo…

a semana do java começa em 0

a do oracle começa em 1

estranho o oracle retornar semana 53, os anos não tem 52 semanas?

bem estranho…o ano tem 52 semanas e 1 dia

Caro douglaskd,

De fato são 52 semanas e 1 dia. Estranho o Oracle retornar 53. Mais estranho ainda é o java retornar uma semana a mais!

O ano não tem 52 semanas exactas. Para acertar, de vez em quando tem de haver um ano com 53 semanas.

http://en.wikipedia.org/wiki/ISO_week_date

isso é em portugal,

aqui no Brasil temos 1 semana a menos =)