Problemas com SimpleDateFormat

9 respostas
I

Amigos, boa noite…

Tenho um campo imput no JSP onde o usuário informar a data do pedido no formato DD/MM/YYYY … mas tento inserir em um campo do tipo date no MySQL e não consigo devido ao formato. Tentei usar a seguinte função do java abaixo mas ele não formata da forma YYYY/MM/DD que é a do banco.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date date = sdf.parse(pedidoForm.getDataPedido());

resulpado do date:

Wed Jul 01 00:00:00 BRT 33

Como posso fazer para colocar no formato YYYY/MM/DD ??

Vlw…

9 Respostas

E

Faça isso

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");   
Date date = sdf.parse(pedidoForm.getDataPedido());  
sdf.format(date);
dm_thiago

IgorFranco:
Amigos, boa noite…

Tenho um campo imput no JSP onde o usuário informar a data do pedido no formato DD/MM/YYYY … mas tento inserir em um campo do tipo date no MySQL e não consigo devido ao formato. Tentei usar a seguinte função do java abaixo mas ele não formata da forma YYYY/MM/DD que é a do banco.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date date = sdf.parse(pedidoForm.getDataPedido());

resulpado do date:

Wed Jul 01 00:00:00 BRT 33

Como posso fazer para colocar no formato YYYY/MM/DD ??

Vlw…

Como parâmetro do SimpleDateFormat você coloca como está/vai estar a sua String que representa a data. Se no seu formulário você preenche “dd/MM/yyyy” então como parâmetro você também deve colocar isso.

... = new SimpleDateFormat("dd/MM/yyyy");

Só precisa concertar isso.

I

Amigos eduardo e thiago, tem oq vc vcs postaram mas nao passa para o formato americano (yyyy/mm/dd). Ai eu do um system.out na variavel date e o resultado q aparece é este:

Fri Jul 02 00:00:00 BRT 34

O q posso fazer?

vlw

J

Igor, vê se isso te ajuda!

import java.util.Date;

public class DateTest {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Date d = new Date();
		System.out.println("Data (java.util.Date): " + d.toString());
		
		java.sql.Date sqlDate = new java.sql.Date(d.getTime());
		System.out.println("Data (java.sql.Date): " + sqlDate.toString());

	}

}
I

Funfou amigo Java Man, mas como posso criar um metodo onde eu recebo como parametro a data no formato brasileiro e retorno no formato americano. A minha ideia e colocar este metodo dentro de uma classe util e chama-lo quando precisar??

Como poderia implementar este metodo??

Vlw.

sf.marcius

o resultado está saindo assim pq vc está imprimindo o objeto date direto com:

System.out.println(date);

O SimpleDateFormat não altera o formato do date. Ele é apenas uma estrutura capaz de criar outro objeto (uma String) que representa o Date passado no formato especificado, ou faz o parse de uma String que representa a data para um objeto do tipo Date.

para pegar a data formatada, faça como o colega eduardognz falou.

se vc quiser que a data ja venha formatada ao se usar System.out.println(date);

sobreescreva o método toString() do Date.

J

Está aí o método desejado. Na verdade você já estava com a faca e o queijo na mão. Só faltou cortar! kkk!

import java.util.Date;

public class DateConversion {
	public static String convertToSQLDate(Date d) {
		java.sql.Date dateBD = new java.sql.Date(d.getTime());
		return dateBD.toString();
	}

	public static void main(String[] args) {

		Date today = new Date();
		System.out.println("Hoje: " + today.toString());

		System.out.println("Hoje MySQL: " + convertToSQLDate(today));

	}

}

Espero ter ajudado!
Abraço!

I

Vlw amigo Java Man,

O seu método funfa, mas o problema que quando tento converter o atributo data do meu objeto, q era do tipo String e agora Date, nao consigo. Estou tento desta forma:

FormatUtils.convertToSQLDate(pedidoForm.getDataPedido());

Dá o seguinte erro:

BeanUtils.populate

java.lang.IllegalArgumentException: Cannot invoke br.com.sce.business.vo.pedido.PedidoVO.setDataPedido - argument type mismatch

O metodo setDataPedido do meu VO esta assim:

private Date   dataPedido;

public Date getDataPedido() {
		return dataPedido;
}

public void setDataPedido(Date dataPedido) {
		this.dataPedido =  dataPedido;
}

Verifiquei aq, e no MySql meu campo data esta como Date q tem o formato americano yyyy/mm/dd, e no meu input do jsp o formado é outro dd/mm/yyyy… mas se eu mudar o tipo de atributo no VO para String pede para eu mudar o tipo de dado do seu metodo… mas nao funfa…

O que posso fazer ?

I

Amigo, pensando mais um pouco aq, consegui fazer um metodo q fizesse oq eu queria:

// Converte  data do tipo dd/MM/yyyy para yyyy/MM/dd  
    public static String converteData(String data) throws ParseException{
    	    	
    	SimpleDateFormat in= new SimpleDateFormat("dd/MM/yyyy");  
		SimpleDateFormat out = new SimpleDateFormat("yyyy-MM-dd"); 
		
		String novaData = out.format(in.parse(data.toString()));
		
		return novaData;
    	
    }

Ai na Action chamo e dou um set no atributo do meu objeto:

pedidoForm.setDataPedido(FormatUtils.converteData(pedidoForm.getDataPedido()));

Vlw amigos…

Um abraço…

Criado 28 de janeiro de 2009
Ultima resposta 31 de jan. de 2009
Respostas 9
Participantes 5