DUvida Calendar.DAY_OF_MONTH?

Folks,

não entendi

roda linha :


		 System.out.println("Calendar.DAY_OF_MONTH="+Calendar.DAY_OF_MONTH);

resultado é 5

e quando coloca na linha



System.out.println("dia=" +dataInicial.get(Calendar.DAY_OF_MONTH));

resultado é a dia =12

Minha duvida porque o valor 5 (Calendar.DAY_OF_MONTH)) da o resultado do dia 12 que é hoje…

se alguém puder me ajudar …só queria entender o porque está certo o resultado ???

agradeceria


 String[] dataformatada = new String[2];
		 SimpleDateFormat sd = new SimpleDateFormat("EEEE-yyyy-MM-dd");
		 Calendar dataInicial = Calendar.getInstance(new Locale("pt","BR"));  
		 
		 System.out.println("Calendar.DAY_OF_MONTH="+Calendar.DAY_OF_MONTH);
		 
		 System.out.println("dia=" +dataInicial.get(Calendar.DAY_OF_MONTH));

		 System.out.println("mes=" +dataInicial.get(Calendar.MONTH));
		 
		 System.out.println("ano=" +dataInicial.get(Calendar.YEAR));
		 
		// dataInicial.add(Calendar.DAY_OF_MONTH, -180);//subtrai 180 dias   
		 Date datai = dataInicial.getTime();
		 dataformatada[0]=new String( sd.format(datai));
		 
		 System.out.println("data="+dataformatada[0]);
		 
		 
		 resultado :
		 
		 Calendar.DAY_OF_MONTH=5
		 dia=12
		 mes=7
		 ano=2008
                 data=Terça-feira-2008-08-12

Gambiarra por que não existiam enumerations.
DAY_OF_MONTH é um atributo public static final da classe Calendar.

Exatamente para você poder fazer data.get(Calendar.DAY_OF_MONTH);

Se não fosse isso teria que fazer data.get(5);
que convenhamos, fica muito mais dificil

minha duvida porque o 5 retorna o dia 12.

abs

Cara, isso é uma constante que é usada pela classe Calendar para identificar qual campo da classe você quer obter o valor.

Para ficar um pouco mais claro.

Ele usa algo do tipo:

public int get(int campo){
  switch(campo){
    case DAY_OF_MONTH:{
      return valor_do_dia_atual; // Não sei como ele faz isso
    }
       
  }

}

Entendeu?

Abraços

pq qdo vc poem
System.out.println(“Calendar.DAY_OF_MONTH=”+Calendar.DAY_OF_MONTH);

vc esta mostrando o valor da variavel static chamada DAY_OF_MONTH… q é 5

http://java.sun.com/j2se/1.4.2/docs/api/constant-values.html#java.util.Calendar.DAY_OF_MONTH
(segue ai a lista de valores)

esse 5… é o “endereço” de onde fica gravado o real valor do DIA no array interno…

qdo vc dah o get(Calendar.DAY_OF_MONTH)… q seria a mesma coisa q get(5)…
ai vc estaria pegando o dia do mês…

Gambeta!

num sei pq tad dando erro mas porque voce não tenta assim?

            public static final String FORMATO_DATA = "yyyy-MM-dd"; 
            static Calendar calendario = Calendar.getInstance(TimeZone.getDefault());      
            static SimpleDateFormat simpleData = new SimpleDateFormat(FORMATO_DATA);
       calendario.set(calendario.DAY_OF_MONTH,calendario.get(calendario.DAY_OF_MONTH);