Converter campo do tipo String para Date()
Pessoal, preciso converter um campo String, tipo um request.getParameter("contendo_uma_data_no_formato_dd/MM/yyyy") para um campo do tipo Date. Como faço isto ?
Arlei Junior
Curtidas 0
Respostas
Pedro Almeida
09/04/2009
Faça assim:
:!:
String texto = "16/08/2004"; String formato = "dd/MM/yyyy"; Date date = new SimpleDateFormat(formato).parse(texto);
GOSTEI 0
Pedro Almeida
09/04/2009
[quote="staroski"]Faça assim:
:!:
desculpa minha opinião amadora mas fiz desse jeito, mas preciso de uma função que retorna uma data formatada para o MySql
private Date converteData(String mydata) throws IOException, ParseException{
Date data = null;
DateFormat dtOutput = new SimpleDateFormat("yyyy-MM-dd HH:mm");
try {data = dtOutput.parse(mydata);
System.out.println("data vai="+ dtOutput.format(data));}
catch (java.text.ParseException ex) {ex.getMessage();}
System.out.println("data vai="+ data);
return data;
}
só que "return data" devolve null, ou seja não foi "setada no try /catch
String texto = "16/08/2004"; String formato = "dd/MM/yyyy"; Date date = new SimpleDateFormat(formato).parse(texto);
GOSTEI 0
Pedro Almeida
09/04/2009
Utilize as tags CODE ao escrever código java.
Porque precisa formatar a data para o MySQL?
Se você inserir um objeto do tipo java.sql.Date, você não vai precisar se preocupar com o formato da data.
Porque você pos um throws IOException e ParseException?
Você disse que seu método está retornando null, isso não pode ser verdade, provavelmente ele está lançando uma excessão. Posta o Stack Trace dessa excessão.
private Date converteData(String mydata) {
Date data = null;
try {
DateFormat dtOutput = new SimpleDateFormat("yyyy-MM-dd HH:mm");
data = dtOutput.parse(mydata);
catch (ParseException e) {
e.printStackTrace();
}
return data;
}
GOSTEI 0
Pedro Almeida
09/04/2009
[quote="staroski"]Utilize as tags CODE ao escrever código java.
Porque precisa formatar a data para o MySQL?
Se você inserir um objeto do tipo java.sql.Date, você não vai precisar se preocupar com o formato da data.
Porque você pos um throws IOException e ParseException?
Você disse que seu método está retornando null, isso não pode ser verdade, provavelmente ele está lançando uma excessão. Posta o Stack Trace dessa excessão.
private Date converteData(String mydata) {
Date data = null;
try {
DateFormat dtOutput = new SimpleDateFormat("yyyy-MM-dd HH:mm");
data = dtOutput.parse(mydata);
catch (ParseException e) {
e.printStackTrace();
}
return data;
}
retorna null pq fiz um System.out.println na chamda da funçao pq o mysql dizia que estava tentando inserir null. O problema , creio, é que a data vem no formato americano, ou seja:
time=8/16/2010 4:00pm,
Recebo isso como string e tenho que inserir numa DB que tem um campo do tipo datetime (mysql)
o try/catch foi uma sugestão que achei válida, mas o java me pediu para criar throws IOException e ParseException, fiz o que ele pediu, inclusive na classe MAIN, o que achei estranhissimo. :-(
----
Inserida!
data vai=null
Conectado!
Erro ao inserir um título
Data truncation: Incorrect datetime value: 'null' for column 'snaDataHora' at row 1
BUILD SUCCESSFUL (total time: 6 seconds)
GOSTEI 0
Pedro Almeida
09/04/2009
Nao consigp tratar a Data
No meu caso eu tenho uma classe bean onde tenho os campos.
com seus respectivos set's e get's.
E tambem tenho o meu dao onde coloco o Insert Into que puxa da classe bean os campos.
e claro a minha pagina JSP onde vou digitar meus dados ja com a mascara.
O que devo fazer nesse caso?
public class pessoa
{
private Integer idpessoa;
private String nome;
private Date nascimento;
}
public class PessoaDAO
{
private InterfacePool pool;
public PessoaDAO (InterfacePool pool){
this.pool = pool;
}
public void salvar(Pessoa pessoa) throws SQLException
{
Connection con = null;
try {
con = pool.getConnection();
PreparedStatement ps;
String sqlInsert;
sqlInsert = "INSERT INTO pessoa (nascimento, nome) VALUES (?, ?)";
ps = con.prepareStatement(sqlInsert);
setPreparedStatement(pessoa, ps);
ps.executeUpdate();
ps.close();
}
finally
{
pool.liberarConnection(con);
}
}
private void setPreparedStatement(Pessoa pessoa,
PreparedStatement ps) throws SQLException {
ps.setString(1, consumidor.getnome());
ps.setDate(2, consumidor.getNascimento());
}
}
<html>
<head >
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cadastro Pessoa</title>
</head>
<body bgcolor="#D0E2F2">
<script type="text/javascript">
function data() {
if (document.frm.nascimento.value.length == 2){
document.frm.nascimento.value = document.frm.nascimento.value + "/" ; }
if (document.frm.nascimento.value.length == 5){
document.frm.nascimento.value = document.frm.nascimento.value + "/"; }
}
</script>
<form onreset="return confirm('Deseja Limpar os campos do formulário?')" id="frm" name="frm" method="post">
<input type="hidden" name="cmd" value="cadastrarPessoa"></input>
<table
align="center" style="color: #161D26; font-size: 10px; font-family: Tahoma, Verdana, Arial, Sans-Serif; border-left-color: #8080C0; border-top-color: #8080C0; border-right-color: #8080C0; border-bottom-color: #8080C0"
border="0" cellpadding="3">
<thead>
<tr style="color: #161D26; font-style: normal; font-size: 10px; font-family: Tahoma, Verdana, Arial, Sans-Serif; font-weight: bold; width: 411px">
<th></th>
</tr>
<tr>
<td align = "right">Nome*:</td>
<td colspan="4"><input id="nome" name="nome" ></input></td>
</tr>
<tr>
<td align = "right">Data de Nascimento*:</td>
<td><input maxlength="10" onkeypress="data()" id="nascimento" name="nascimento" ></input></td>
</thead>
</table>
<br>
<table bgcolor="#B0C4DE" align="center" border="0" bordercolor="#DCDCDC" cellspacing="0" cellpadding="5" width="20%">
<tr>
<td colspan="2" align = "center">
<input type="submit" title="Salvar" width="80px" height=22px" value="Salvar"></input>
<input type="reset" title="Cancelar" width="80px" height="22px" value="Cancelar"></input>
</td>
</tr>
</table>
</form>
</body>
</html>
GOSTEI 0
Pedro Almeida
09/04/2009
não está dando erro nessa linha?
Um erro comum é devido ao fato do JDBC (setDate) usar java.[b]sql[/b].Date e não o java.[b]util[/b].Date . Verifique qual o tipo retornado por 'getNascimento()'.
Se for um java.[b]util[/b].Date, é fácil converter:
[[]]
ps.setDate(2, consumidor.getNascimento())
java.sql.Date sqlDate = new java.sql.Date(consumidor.getNascimento().getTime()); ps.setDate(2, sqlDate);
GOSTEI 0