Jcaledar, como pegar o valor do dia do mês?

8 respostas
alisson027

ola pessoalestou com um probleminha com o jCalendar
preciso do dia marcado no jcalendar mas ao inves disso ele retorna um numero para cada dia da semana
ex:
clica num domingo: print = 0
clica numa segunda: print = 1
clica numa terça: print = 2
etc..

jCalendar1.getDayChooser().addPropertyChangeListener(new PropertyChangeListener(){  
     public void propertyChange(PropertyChangeEvent event) {  
          if (("day".equals(event.getPropertyName())) ||  
               ("month".equals(event.getPropertyName())) ||  
               ("year".equals(event.getPropertyName()))){  

                    Date data =new Date();
                    data = jCalendar1.getDate();
                    int dia=data.getDay();
                    System.out.print(dia);
      
           }  
      }  
});
o código não trás erro algum somente nao esta imprimindo o que desejo

8 Respostas

dougfane
Tente:
//passa o index que seu JCalendar retorna como parâmetro
public String getDiaSemanaDescritivo(Integer index) {
        
    String[] diaSemana = new String[]{"Domingo","Segunda-feira",
               "Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"};
        
    return diaSemana[index];

}
alisson027

desculpa amigo acho q nao soube me expressar bem, o que eu quero é o dia do mes

tipo dia 21,22 ou 30

do jeito que esta ele se eu seleciono o dia 11(hoje) ele me retorna o numero 0 pq é domingo
o correto seria ele retornar o numero 11 ou se der para retornar a data como DD/MM/AAAA OU AAAA/MM/DD melhor ainda

alisson027

ninguém sabe ??? :frowning:

S

Fala ae cara beleza,

Por questões de boa prática, para se trabalhar com datas aconselho você utilizar a classe Calendar pois a classe Date possui algumas métodos deprecated (obsoletos):

Você pode converter a data da sua variavel jCalendar1 direto para Calendar dessa forma:

Calendar calendario = jCalendar1.getCalendar(); //RETORNA O CALENDARIO PARA EXTRAIR O QUE QUISER DA DATA
System.out.print(calendario.get(Calendar.DAY_OF_MONTH)); //IMPRIME APENAS O DIA DO MES

Verifiquei na API do JCalendar: http://www.toedter.com/en/jcalendar/api/com/toedter/calendar/JCalendar.html e voce pode retornar um calendario com o metodo getCalendar().

Dessa forma você consegue trazer a data bastando apenas informar ao get o numero inteiro (representados por atributos finais da classe Calendar) o que quer retornar.

Faz uns testes ai cara e posta pra gente se deu tudo certo ou errado.

Espero ter ajudado, falou e abraço.

S

Havia me esquecido, para trazer a data formatada utilize a classe SimpleDateFormat:

Nesse caso você não precisa converter o jCalendar1 para Calendar, apenas peque o metodo getDate() como você tinha feito antes:

SimpleDateFormat convert = new SimpleDateFormat("dd/MM/aaaa"); //OBERSEVE OS CARACTERES MAIUSCULOS NO MES
System.out.println( "Data formatada: "+ convert.format(jCalendar1.getDate()) );

Acho que com esses recursos você consegue arquivar esse B.O. rsrsrsrs, falou e abraço e não esquece de postar se caso algo der errado.

alisson027

spidermanx como a turma demoro um poco pra respode tive q me virar um pouco aki hehehe
mas ficou assim:

jCalendar1.getDayChooser().addPropertyChangeListener(new PropertyChangeListener(){  
     public void propertyChange(PropertyChangeEvent event) {  
          if (("day".equals(event.getPropertyName())) ||  
               ("month".equals(event.getPropertyName())) ||  
               ("year".equals(event.getPropertyName()))){  
  
                    Date data1 =new Date();
                    data1 = jCalendar1.getDate();
                    int dia = data1.getDate();
                    int mes = data1.getMonth();
                    mes++;
                    int ano = data1.getYear()+1900;
                    String data= ano+"-"+mes+"-"+dia;
porem agradeço a ajuda e vou analisar as dicas dadas até pq fazer esse treco em tudo quanto é data ninguem merece né.

o problema esta resolvido mas ainda ficou a duvida(mais pela didática)

ta com cara de duvida ignorante minha mas antes se passar por um do que permanecer como um né XD
data1=jCalendar1.getDate();//retorna Tue Jun 21 23:29:21 BRT 2011
int dia=data1.getDate();//retorna 21
pq os retornos são diferentes se é o mesmo metodo getDate para os dois e os valores vem de uma mesma fonte jCalendar1
alisson027

mensagem duplicada

S

Fala ai alisson027, referente sua dúvida:

O método getDate() não é o mesmo para os dois, apesar de visualmente eles dizerem o contrátio por terem o mesmo nome (assinatura).

Porém em java, não é por que os métodos possuem o mesmo nome (assinatura) que eles vão ou devem trazer a mesma coisa entende?

Seria algo mais ou menos assim.

JCalendar jCalendar1 = new JCalendar();
Date dataCompleta = jCalendar1.getDate(); // aqui a classe JCalendar te retorna uma classe Date com data completa.

Date data1 = dataCompleta; // aqui vc recebe a data completa que foi carregada acima
int dia = data1.getDate(); // da data completa que eu peguei eu quero só o dia do mês

E quanto sua dúvida não tem nada de ignorante e se vc não pergunta não terá respostas certo?

É por esses tipos de conflitos, além da classe Date já possuir bastante coisa obsoleta (deprecated) que te aconselho a estudar/conhecer fortemente a classe Calendar, segue a referência da API: http://download.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html, pois além de ser mais utilizada, você tem mais opções para resgatar o que quiser da data e sem fazer tanta gambiarra entende.

espero ter ajudado.

abraço.

Criado 11 de junho de 2011
Ultima resposta 15 de jun. de 2011
Respostas 8
Participantes 3