Boa tarde pessoal, estou eu aqui mais um vez pra pedir ajuda a vcs , vou passar o código e no fim dele explico qual o problema. Só uma observação que o Date que tô usando é java.util.Date.
import java.util.Date;
public class Pessoa {
private String nome;
private Date data;
public Pessoa(String nome, Date data) {
this.nome = nome;
this.data = data;
}
public String getNome() {return nome;}
public void setNome(String nome) {this.nome = nome;}
public Date getData() {return data;}
public void setData(Date data) { this.data = data; }
@Override
public String toString() {
return "Nome : " + getNome() + " Data: " + getData();
}
}
public class Sistema {
public static void main(String[] args) {
GregorianCalendar gc = new GregorianCalendar(2009, Calendar.JULY, 15);
Date date = gc.getTime();
DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
Pessoa p = new Pessoa("Henrique",date);
System.out.println(p);
}
}
Então, a questão é que eu passo um obj Date para a classe Pessoa e ele imprime -> Nome : Henrique Data: Wed Jul 15 00:00:00 BRT 2009, na minha classe Main, gostaria que ele imprimisse 15/07/1984. Tenho que mudar o construtor da minha classe Pessoa pra DAteFormat, ou posso continuar usando Date no construtor de Pessoa? Gostaria que ainda continuasse sendo Date no construtor e mesmo assim imprimisse 15/07/1984.
Blz, mas no caso do construtor da classe Pessoa, eu deveria mudar pra SimpleDateFormat ou podia continuar com Date? Se continuasse com Date como faria pra converter SimpleDateFormat em Date para mandar pro meu construtor de Pessoa?
Pô cara eu tava pensando justamente em fazer isso e vc só fez confirmar oq eu ja queria fazer. Agora se não for pedir demais, estou usando MySQL e JDBC, e na minha tabela tenho nome (VARCHAR) e data(DATE) como campos. Qdo eu for dar um insert de uma pessoa no BD, eu posso deixar Date no construtor de Pessoa ou teria que modificar? O MySQL vai aceitar eu mandar o Date ou teria que ser em outro formato?
Se vvc usar PreparedStatement (que é o aconselhado… hj mesmo postei um negócio pra um cara sobre como utilizar e separar SQL do código)…é muito simples…
Por exemplo:
Pessoa p = new Pessoa();
p.setNome("Vinicius");
p.setData(new Data(System.curretTimeMillis()); //Pego data atual
PreparedStatement stm = connection.PrepareStatement("INSERT INTO PESSOA (nome,data) VALUES (?,?)");
//agora eu preciso dizer quais valores eu vou inserir, no caso eu substitui os ?
stm.setString(1,p.getNome());
stm.setDate(2,p.getData());
stm.execute();
Se vc colocar certinho dentro do BD os tipos das colunas é so utilizar PreparedStatement q ele tem todos os tipos de colunas disponiveis e faz as conversoes certinhas…setString, setInt, setDate… Não precisa formatar a data para 2009-09-09… Vai por mim… eu errei mto nisso… já quebrei mta cabeça
[quote=viniciusfaleiro]Se vvc usar PreparedStatement (que é o aconselhado… hj mesmo postei um negócio pra um cara sobre como utilizar e separar SQL do código)…é muito simples…
Por exemplo:
Pessoa p = new Pessoa();
p.setNome("Vinicius");
p.setData(new Data(System.curretTimeMillis()); //Pego data atual
PreparedStatement stm = connection.PrepareStatement("INSERT INTO PESSOA (nome,data) VALUES (?,?)");
//agora eu preciso dizer quais valores eu vou inserir, no caso eu substitui os ?
stm.setString(1,p.getNome());
stm.setDate(2,p.getData());
stm.execute();
Se vc colocar certinho dentro do BD os tipos das colunas é so utilizar PreparedStatement q ele tem todos os tipos de colunas disponiveis e faz as conversoes certinhas…setString, setInt, setDate… Não precisa formatar a data para 2009-09-09… Vai por mim… eu errei mto nisso… já quebrei mta cabeça
bixo, em java vc tem q ficar esperto com uma função que chama toString. é ela que é chamada por padrão quando vc precisa exibir alguma coisa, sem usar um método específico para impressão. antes de qualquer coisa, pesquise sobre isso.
vc terá q fazer uma função que monte essa data do jeito que vc quer, pois a maquina virtual não tem como adivinhar como vc vai querer essa data
as dicas acima vão te ajudar nisso.
++ editado +++
q mancada, vc ja tava implementando o toString… esque oq falei. abraço!
Entao cara, como o que voce deseja nao faz parte da modelagem da sua classe, entao creio que ficara melhor modificando a implementacao do seu toString():
[color=red]AJUDA[/color]
Preciso fazer uma alicação que ao ser inicializada já dispare a data atual! Detalhe que existe um campo [color=green]jTextField[/color] que a data deve ficar atualizando de segundo em segundo como faço?