Boa noite pessoal… sou novato em programação e estou com problemas num formulário de cadastro bem simples.
Não estou conseguindo salvar a data neste formato dd/mm/yyyyy (10/09/2012). Estou quebrando a cabeça, já li, pesquisei, tentei e sem sucesso.
Mas quando vai no formato yyyy-mm-dd (2012-09-10) funciona na boa.
Tenho os seguintes:
Uma tabela no Postgre
CREATE TABLE pesfisica
(
dt_nascimento date NOT NULL
)
Uma classe modelo chamada pessoaFisica -uma parte dela-
[code]import java.sql.Date;
private Date dt_nascimento;
public Date getDt_nascimento() {
return dt_nascimento;
}
public void setDt_nascimento(Date dt_nascimento) {
this.dt_nascimento = dt_nascimento;
}[/code]
Uma html com o campo para preencher a data
[code]
Data de Nascimento* |
dd/mm/aaaa |
[/code]
Um controle que recebe da html e joga para o DAO
pesf.setDt_nascimento(Date.valueOf(request.getParameter("dt_nascimento")));
DAO
public void save(PesFisica pesf) {
Session session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
session.save(pesf);
transaction.commit();
return;
}
A mensagem de erro quando coloco a data por exemplo 10/09/2012
at java.sql.Date.valueOf(Unknown Source)
Toda dica é bem vinda, agradeço desde já.
Tente usando o java.util.Date ao invés do Date do sql.
Alterei como havia dito mas segue a mensagem de erro ao inserir o valor 13/09/2010, tambem testado com 13-09-2010
[code]HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.IllegalArgumentException
java.sql.Date.valueOf(Unknown Source)
controle.PesFisicaControle.doPost(PesFisicaControle.java:45)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.33 logs.
[/code]
Mas com o valor 2010-12-12 por exemplo funcionou. . Até mesmo se eu colocar 2012/12/12 dá a mensagem de erro.
Quero que o usuário digite a data de nascimento igual esta no RG =/ padrão brasileiro.
Valeu a dica ai,… mas ainda nada =(
Ah, use DateFormat então. Não tenho nenhum exemplo aqui, mas há diversos por aí. Ou então, se estiver usando JSF, use mask. Eu recomendo você mostrar pro usuário no formato “DD/MM/AAAA” como você quer, mas salvar como “AAAA-MM-DD”.
Sim, vi diversos exemplos mas como sou novo na pratica de programaçao nao estou sabendo aplicar.
Ja li sobre dateformat, simpledateformat… mas não estou sabendo mesmo aplicar isso e onde fazer exatamente. =/
Alguemmm que saca sobre isso pra me dar um HELPP… por favorr…
Na hora de inserir os registros set o DateStyle do postgres.
Por exemplo:
SET DateStyle European;
Fazendo isso, ele grava as datas em formato dd/mm/yyyy.
Busque isso aqui no google:
DateFormat site:guj.com.br
Ok, darei uma lida e testarei. Espero que me ajude muito, pois não quero ficar muito preso nisso. Obrigado.
Nossa isso é muito compliado, será que não existe algo mais simples.
Na web vejo vários exemplos mas não consigo encaixar no meu programa.
Eu até identifico a situação, a minha html recebe o valor 11/03/2001 mas quando é passado para o controle só é aceito se for 2001-03-11.
Ai que está, como eu altero esta porcaria para conseguir fazer a inserção no BD?
Tem geral falando use o SimpleDateFormat, use o DateFormat. Como se eu lendo ah tá que isso, tão simples vou aplicar aqui e pronto, já estou confuso, nem sei qual o certo usar para sanar esse problema.
Sou novato mesmo, alguém poderia dar um exemplo funcional e onde posso aplicar esse codigo?
Em uma das minhas tentativas, colocarei em detalhes:
[code]SimpleDateFormat dataF = new SimpleDateFormat(“yyyy-MM-dd”);
//vou criar uma variavel para receber da html o valor da data.
String nData = request.getParameter(“dt_nascimento”);
//vou dizer que dataformatada recebe o valor do campo
dataF.format(nData);
//reclamando que dt_nascimento (DATE) nao aplica aos argumentos (SILPLE_DATE_FORMAT) ERRO ERRO
pesf.setDt_nascimento(dataF);
// Quero assim 27/04/1987 e só aceita se for assim 1987-04-27
[/code]
Ainda nao consegui resolver essa coisa de data onde muitos dizem que eh simples. =/
Também sou iniciante e estou com um problema parecido com o seu Vinicios_1987.
Quando uso o Date Format ou o Simple date format ele transforma minha data em String e não em Date, por isso gera uma exceção pq o banco está esperando um Date enão um String.
Uma coisa tão simples que infelizmente também ainda não achei solução.
Se alguém puder, por favor já uma força, obrigado!