Esse código é para exibir a data em um jlabel mas o mês só aparece o número 0 em vez do mês atual o resto esta funcionando perfeitamente a o ano e o dia, o que pode estar errado nesse código que esta causando esse erro???
Aguardo respostas…
import java.text.*;
import java.util.*;
public class ClassDatas {
/** Creates a new instance of ClassDatas */
public ClassDatas() { }
private Object dataCadastro;
private Object hora;
public Object PegaDataAtual(){
GregorianCalendar cal = new GregorianCalendar();
int dia = cal.get(Calendar.DAY_OF_MONTH);
int mes = cal.get(Calendar.MONTH);
int ano = cal.get(Calendar.YEAR);
dataCadastro = ano+ "/" +mes+ "/" +dia;
return this.dataCadastro;
}
public Object PegaHora(){
GregorianCalendar ho = new GregorianCalendar();
int h = ho.get(Calendar.HOUR);
int m = ho.get(Calendar.MINUTE);
int s = ho.get(Calendar.SECOND);
hora = h+":"+m+":"+s;
return this.hora;
}
}
private void formWindowOpened(java.awt.event.WindowEvent evt) {
// TODO add your handling code here:
ClassDatas data = new ClassDatas();
lblData.setText(data.PegaDataAtual().toString());
}
A Classe Abstrata Calendar retorna um inteiro de 0 a 11 referente aos meses, onde 0 é janeiro e 11 é dezembro se vc fazer isso:
int mes = cal.get(Calendar.MONTH );
Ele vai retornar: 0 que é janeiro.
inclusive ele tem constantes referentes aos meses
Exemplo;
int mes = cal.get(Calendar.JANUARY);
Já utilizei dessa maneira, e tive que usar um switch case, para mostrar os meses, tipo: caso for 0 ai eu fazia isso:
int mes = cal.get(Calendar.JANUARY);
E assim com os demais.
Use assim:
package br.com.estoque.utilitarios;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Data {
public String dia, mes, diaDaSemana, ano;
public String leData() {
SimpleDateFormat formatada = new SimpleDateFormat(
"EEEE, dd 'de' MMMM 'de' yyyy");
Date data = new Date();
String dataFormatada = formatada.format(data);
return dataFormatada;
}
public String leHora() {
String formatador = "HH:mm:ss";
Date data = new Date();
SimpleDateFormat formatada = new SimpleDateFormat(formatador);
String dataAtual = formatada.format(data);
return dataAtual;
}
public static void main(String[] args) {
Data d = new Data();
System.out.println(d.leData());
}
}
As datas em java, mais especificamente o mês é indexado a partir do 0, ou seja:
janeiro=0, fevereiro=1 e assim por diante, se vc estiver pegando a data atual do SO, provavelmente aparecerá 0(zero) referente ao mês, se quiser manter os meses de acordo com o que estamos acostumados, terá de usar alguma lógica para isso(continha básica rsrs)…
Abraço.
[quote=Oziel Morais]Esse código é para exibir a data em um jlabel mas o mês só aparece o número 0 em vez do mês atual o resto esta funcionando perfeitamente a o ano e o dia, o que pode estar errado nesse código que esta causando esse erro???
Aguardo respostas…
import java.text.*;
import java.util.*;
public class ClassDatas {
/** Creates a new instance of ClassDatas */
public ClassDatas() { }
private Object dataCadastro;
private Object hora;
public Object PegaDataAtual(){
GregorianCalendar cal = new GregorianCalendar();
int dia = cal.get(Calendar.DAY_OF_MONTH);
int mes = cal.get(Calendar.MONTH);
int ano = cal.get(Calendar.YEAR);
dataCadastro = ano+ "/" +mes+ "/" +dia;
return this.dataCadastro;
}
public Object PegaHora(){
GregorianCalendar ho = new GregorianCalendar();
int h = ho.get(Calendar.HOUR);
int m = ho.get(Calendar.MINUTE);
int s = ho.get(Calendar.SECOND);
hora = h+":"+m+":"+s;
return this.hora;
}
}
private void formWindowOpened(java.awt.event.WindowEvent evt) {
// TODO add your handling code here:
ClassDatas data = new ClassDatas();
lblData.setText(data.PegaDataAtual().toString());
}