seguinte estou com um problema... escrevi um código simples que recebe o dia da semana (1 - domingo, 2 - segunda, 3 - terça, ....), a semana do ano (1 à 52) e o ano, e com isso deve me retornar a data do dia (DD/MM/AAAA), porém para alguns dias funciona para outros não:
dia - semana - ano - resultado
1 - 1 - 2005 ==> 02/01/2005 ==> OK
2 - 1 - 2005 ==> 27/12/2004 ==> o correto é 03/01/2005
3 - 1 - 2005 ==> 28/12/2004 ==> o correto é 04/01/2005
4 - 1 - 2005 ==> 29/12/2004 ==> o correto é 05/01/2005
5 - 1 - 2005 ==> 30/12/2004 ==> o correto é 06/01/2005
6 - 1 - 2005 ==> 31/12/2004 ==> o correto é 07/01/2005
7 - 1 - 2005 ==> 01/01/2005 ==> o correto é 08/01/2005
1 - 2 - 2005 ==> 09/01/2005 ==> OK
ou seja, so funciona os domingo... alguém já enfrentou este problema ??
[code]
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.SimpleTimeZone;
public class Informa_Data {
public static int temp_semana;
public static int temp_ano;
public static int temp_diaSemana;
public static void main(String args[]) {
// Cria uma TIME ZONE correspondente ao horário de Brasília
SimpleTimeZone pdt = new SimpleTimeZone(-3 * 60 * 60 * 1000, "GMT-3:00");
// Seta as regras para o horário de verão Brasileiro
// Começando no primeiro domingo após o dia primeiro
pdt.setStartRule(Calendar.NOVEMBER, 1, Calendar.SUNDAY, 0);
// Terminando no último domingo do mês de Fevereiro
pdt.setEndRule(Calendar.FEBRUARY, -1, Calendar.SUNDAY, 0);
// create a GregorianCalendar with the Pacific Daylight time zone
// and the current date and time
Calendar calendar = new GregorianCalendar(pdt);
temp_diaSemana = Console.readInt("Insira o dia da semana: ");
temp_semana = Console.readInt("Informe a semana: ");
temp_ano = Console.readInt("Informe o ano: ");
calendar.set(Calendar.YEAR, temp_ano);
calendar.set(Calendar.WEEK_OF_YEAR, temp_semana);
calendar.set(Calendar.DAY_OF_WEEK, temp_diaSemana);
String ret = "Data: " + calendar.get(Calendar.DAY_OF_MONTH) + "/"
+ (calendar.get(Calendar.MONTH) + 1) + "/"
+ calendar.get(Calendar.YEAR) + " - Semana: "
+ calendar.get(Calendar.WEEK_OF_YEAR) + " - Dia Semana: "
+ calendar.get(Calendar.DAY_OF_WEEK) + " - Ano: "
+ calendar.get(Calendar.YEAR);
System.out.println(ret);
String formato = "dd/MM/yyyy";
SimpleDateFormat formatter = new SimpleDateFormat(formato);
System.out.println("A data formatada é: "
+ formatter.format(calendar.getTime()));
}
}