Converter String para Date

Amigos,

como converter uma String do tipo “dd/mm/yyyy” em um tipo java.sql.Date no mesmo formato para inserção no banco?

Grato

algo assim:

SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
java.sql.Date data = new java.sql.Date(format.parse(dataStr).getTime());

Abraço,

Armando

4 curtidas
DateFormat formatter = new SimpleDateFormat("MM/dd/yy");
Date date = (Date)formatter.parse("01/29/02");
1 curtida

[code]/**
* Converte uma String para um objeto Date. Caso a String seja vazia ou nula,
* retorna null - para facilitar em casos onde formulários podem ter campos
* de datas vazios.
* @param data String no formato dd/MM/yyyy a ser formatada
* @return Date Objeto Date ou null caso receba uma String vazia ou nula
* @throws Exception Caso a String esteja no formato errado
*/
public static Date formataData(String data) throws Exception {
if (data == null || data.equals(""))
return null;

    Date date = null;
    try {
        DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        date = (java.util.Date)formatter.parse(data);
    } catch (ParseException e) {            
        throw e;
    }
    return date;
}[/code]

vc pode usar esse código que funciona

Caros,

obrigado pelas respostas,mas acho que os exemplos dos colegas são para converter String em java.util.Date,mas o q preciso é do tipo Date para inseri-lo em um banco de dados … :wink:

Grato

Bom, nem tudo na vida é de mão beijada, portanto não vá se acostumando, afinal de contas um pouco de esforço não faz mal a ninguém, mas vai lá.

Utilizando o método do colega aangreen

	/**
 	 * Converte uma String para um objeto Date. Caso a String seja vazia ou nula, 
 	 * retorna null - para facilitar em casos onde formulários podem ter campos
 	 * de datas vazios.
 	 * @param data String no formato dd/MM/yyyy a ser formatada
 	 * @return Date Objeto Date ou null caso receba uma String vazia ou nula
 	 * @throws Exception Caso a String esteja no formato errado
 	 */
 	public static java.sql.Date formataData(String data) throws Exception { 
 		if (data == null || data.equals(""))
 			return null;
 		
         java.sql.Date date = null;
         try {
             DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
             date = new java.sql.Date( ((java.util.Date)formatter.parse(data)).getTime() );
         } catch (ParseException e) {            
             throw e;
         }
         return date;
 	}
Bom, nem tudo na vida é de mão beijada, portanto não vá se acostumando, afinal de contas um pouco de esforço não faz mal a ninguém

Calma lá colega…Alem de nao ter me entendido bem,acho que você escreveu bobagem…

Eu agradeci o apoio,mas disse q apenas que não se encaixava no que eu queria…

E eu sei que nada vem de graça,pois procurei exaustivamente em fóruns pela web afora,e recorri em ultimo caso ao GUJ,onde supostamente existem pessoas entendedoras da tecnologia

Agradeço novamente a todas as respostas

Rafael Roque
SCJP 1.4
SCWCD.14

1 curtida

Devia pelo menos ter lido atentamente todas as respostas… eu já tinha respondido o que você queria.

Falou,

Armando

Mas quanta agressividade…
calm down,boys…

e,pela terceira vez:OBRIGADO A TODOS OS QUE RESPONDERAM

Abraços
Rafael Roque

Acho que entendi o que o cara realmente quer!
Tava procurando a mesma coisa, e ao ver o comentário do pessoal de cima, entendi como o raf4ever não entendeu o exemplo do pessoal.

O que deve estar acontecendo é: o cara estar tentando pegar dados do banco de dados e não saber como jogar eles para String e usar o SimpleDateFormat.

    Date databanco= new Date();
    databanco=rs.getDate(8);    // pegando do Result Set
    SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
    this.setData(formatador.format(databanco));  // seta a data que vai para o formulário.

Se não for isso o raf4ever que não sabe o que quer. Pela forma que perguntou é exatamente o que o aangreen colocou.

Bom… não sei não… acho que o raf4ever tem uma string no formato dd/mm/yyyy e quer inseri-la no BD, no formato Date.
Bom, para inserir no BD, você não precisa converter a sua string para Date, pode simplesmente inseri-la no BD, usando algum método do próprio BD:

Oracle:

String data = "15/08/2006";
String sql = "Insert into tabela (campo_date) values to_date("'+data+'",'dd/mm/yyyy')";
stmt.execute(sql);

O stmt é um objeto Statement. Para outros BDs, pesquise :slight_smile:

[quote=armando]algo assim:

SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
java.sql.Date data = new java.sql.Date(format.parse(dataStr).getTime());

Abraço,

Armando[/quote]
É isso ai!
Também tava precisando aqui, e funciona perfeitamente.

Pega uma String com uma data tipo : “25/05/1985”
E converte pro formato SQL : 1985-05-25

Valeu

[quote=aangreen][code]/**
* Converte uma String para um objeto Date. Caso a String seja vazia ou nula,
* retorna null - para facilitar em casos onde formulários podem ter campos
* de datas vazios.
* @param data String no formato dd/MM/yyyy a ser formatada
* @return Date Objeto Date ou null caso receba uma String vazia ou nula
* @throws Exception Caso a String esteja no formato errado
*/
public static Date formataData(String data) throws Exception {
if (data == null || data.equals(""))
return null;

    Date date = null;
    try {
        DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        date = (java.util.Date)formatter.parse(data);
    } catch (ParseException e) {            
        throw e;
    }
    return date;
}[/code]

vc pode usar esse código que funciona[/quote]

Estou usando esse método mas dá um erro. Eclipse acusa erro. Tenho que mudar o tipo do método ou mudar o retorno. Alguém pode dar uma luz ai ?

Abraço!

Você conseguiu resolver o seu problema?
Eu testei esse método e funciona perfeitamente.

Sim, consegui resolver o problema.

Vc quer insererir em qual base de dados?

Se oracle vc pode converter usando o TO_DATE; se SQL Server use CONVERT.

ORACLE - http://www.techonthenet.com/oracle/functions/to_date.php
SQL SERVER - http://msdn.microsoft.com/en-us/library/ms187928.aspx

Bom… pessoal, agradeço a todos, pq a minha duvida era exatamente o que o pessoal entendeu primeiro converter “01\08\2010” para java.util.Date …

como faço para o usuário escrever a data e ir logo formatando pra ele ?
exemplo:

[color=orange]“04/”
“04/11/”
“04/11/2010”[/color]

já fiz isso:

[code]
private void jFormattedTextFieldDataKeyPressed(java.awt.event.KeyEvent evt) {
String dth = jFormattedTextFieldData.getText();
if (dth.length() == 2) {
jFormattedTextFieldData.setText(dth + “/”);

    } else if (dth.length() == 5) {
        jFormattedTextFieldData.setText(dth + "/");
       
    }
}[/code]

Mais quando tento apagar ñ apaga em 5 caracter, Ou seja, não consigo fazer a volta apagando
fica os 5 caracter sem apagar.
Ou sabendo o nome da tecla que apaga da direita pra esquerda, no caso, mandaria apagar tudo.
Sei que tem muitas maneiras.
tem uma melhor forma de resolver isso ou de fazer essa facilidade pro usuário?

tópico errado : )

cara… tenso, tentei assim:

[code]SimpleDateFormat formataData = new SimpleDateFormat(“dd/MM/yyyy”);

	try {
		//String data = formataData.format(dtMatricula);
		Date dataCerta = (Date) formataData.parse(dtMatricula);
		System.out.println(dataCerta);
		aluno.setDataMatricula(dataCerta);				
	} catch (ParseException e) {
		e.printStackTrace();
	} 		[/code]

mas no syso vem assim: Thu Jan 31 00:00:00 BRST 2013

o q estou fazendo de errado?

preciso de um objeto do tipo Date pra enviar pro meu método bean