Problema com formatação de data - SimpleDateFormat

7 respostas
augustocolom

Boa noite,

Meu código é este

public class Teste {
	String data = "25/10/1997";
	SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
	Date dataFormatada;
	public void imprime() throws ParseException{
		dataFormatada = df.parse(data);
		System.out.println(dataFormatada);
	}
	public static void main(String[] args) throws ParseException {
		new Teste().imprime();
	}
}

O resultado é esse

Sun Oct 25 01:00:00 BRST 1997

Alguém sabe porque? Não deveria sair ¨25/10/1997¨?

7 Respostas

thiago_spdvr

Acredito que pra formatar a data você teria que usar o método

fd.format(new java.util.Date());

que vai te retornar uma String, não um Date.

augustocolom

thiago_spdvr:
Acredito que pra formatar a data você teria que usar o método

fd.format(new java.util.Date());

que vai te retornar uma String, não um Date.

Opa Thiago, primeiramente obrigo por responder.
Então, estou querendo no formato Date mesmo, pois preciso gerar um relatório limitando as datas.
O caso acima eu coloquei uma String para exemplificar, mas a Data é o usuário que irá escrever,
e ela vem em formato de String, eu preciso pegar essa String e transformar em uma Date, gostaria que a formatação desta data seja ¨dd/MM/yyyy¨

thiago_spdvr

1 - Não dá pra limitar isso no banco, se os dado vem de um BD
2 - Seu assistente de relatórios não permite fazer essa limitação ?

augustocolom

thiago_spdvr:
1 - Não dá pra limitar isso no banco, se os dado vem de um BD
2 - Seu assistente de relatórios não permite fazer essa limitação ?

É uma aplicação Web, os dados devem ficar em um vetor de sessão, por isso ainda não estou usando BD.
Sendo mais preciso, o usuário digita a data de início e data final, a idéia seria listar todos os valores que estão entre
essas datas.

caio_ferreira

amigo, ve se é isso que vc quer

import java.text.*;
import java.util.*;

public class Exemplo5 {

        String data = "07/02/1987";
        SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        Date dataFormatada;
        Locale br = new Locale("pt", "br");
        DateFormat dft = DateFormat.getDateInstance();

        public void imprimi() throws ParseException
        {
            dataFormatada = df.parse(data);
            System.out.println(dataFormatada);
            System.out.println(df.format(dataFormatada));
        }

        public static void main(String[] args) throws ParseException
        {
            new Exemplo5().imprimi();
        }
}

no caso agora a saida é yy/MM/yyyy

D

Galera seguinte, eu tenho um problema parecido com este. Seguinte eu to usando o JCalendar e quando eu vou inserir no banco da um erro, dae eu fui lá e vi que na formação da data estava saindo:

Sat May 22 00:35:42 BRT 2010

Sendo que só quero pegar a data mesmo, como neste exemplo 22/05/2010.

Bom vou deixar uma parte do código aqui para tentar ajudá-los a resolver meu problema.

tratamento.setInicio(guicontrol.dataInicio.getDate());
// aqui está instanciado uma classe de tipo especifico (tratamento) onde eu pego a data do JCalendar

Depois de obter o tratamento conforme desejado, eu mando para a classe DAO de persistencia.

stmt.setDate(1, (Date) tratamento.getInicio());
// aqui eu mando pro banco

Mas com isto dá erro, por que o banco não tá formatado para receber: Sat May 22 00:35:42 BRT 2010, somente: 22/05/2010.

Alguém ae tem uma solução!?

abraços!

augustocolom

doug_sciani:
Galera seguinte, eu tenho um problema parecido com este. Seguinte eu to usando o JCalendar e quando eu vou inserir no banco da um erro, dae eu fui lá e vi que na formação da data estava saindo:

Sat May 22 00:35:42 BRT 2010

Sendo que só quero pegar a data mesmo, como neste exemplo 22/05/2010.

Bom vou deixar uma parte do código aqui para tentar ajudá-los a resolver meu problema.

tratamento.setInicio(guicontrol.dataInicio.getDate());
// aqui está instanciado uma classe de tipo especifico (tratamento) onde eu pego a data do JCalendar

Depois de obter o tratamento conforme desejado, eu mando para a classe DAO de persistencia.

stmt.setDate(1, (Date) tratamento.getInicio());
// aqui eu mando pro banco

Mas com isto dá erro, por que o banco não tá formatado para receber: Sat May 22 00:35:42 BRT 2010, somente: 22/05/2010.

Alguém ae tem uma solução!?

abraços!

Consegui resolver, quando faço a comparação utilizado no formato Date.

if(dataDespesa.after(dataInicioRelatorio)&& dataDespesa.before(dataFinalRelatorio)){//comparar - Pulo do gato
				retorioDespesa.add(auxDespesas);
				
			}

faço isso apenas para comparar e verificar se os valores estão dd/MM/yyyy, mas ele continua em uma String.

Valeu a ajuda.

Criado 20 de maio de 2010
Ultima resposta 21 de mai. de 2010
Respostas 7
Participantes 4