Formatar e converter datas de USA para ptBR - Problema

3 respostas Resolvido
java
L

Existem muitos posts tanto aqui como em outros sites sobre java, e já testei inúmeras formas e não obtive sucesso em trabalhar com data no Java, sempre recebo o mesmo erro:

java.text.ParseException: Unparseable date: “2016-01-01 00:00:00”

Caso alguém puder ajudar eu agradeço, segue a classe:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ConverteData {

    private final SimpleDateFormat formatIso;
    private final SimpleDateFormat formatBra;
    private Date date = null;

    public ConverteData() {
        this.formatIso = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        this.formatBra = new SimpleDateFormat("dd/MM/yyyy");
        
    }
    public String parseIso(String dataBra) {
        try {
            date = this.formatIso.parse(dataBra);
            return (this.formatIso.format(date));
        } catch (ParseException e) {
            e.printStackTrace();
            return ("Parse Error");
        }
    }

    public String parseBra(String dataIso) {
        try {
            date = this.formatBra.parse(dataIso);
            return (this.formatBra.format(date));
        } catch (ParseException e) {
            e.printStackTrace();
            return ("Parse Error");
        }
    }
}

Uso:

ConverteData dt = new ConverteData();
System.out.println(dt.parseBra("2016-01-01 00:00:00"));
System.out.println(dt.parseIso("26/09/2016"));

3 Respostas

R

A principio, deves converter para date no formato que vem a data.
Então no método parseIso utiliza

date = this.formatBra.parse(dataBra);

e no método parseBra

date = this.formatIso.parse(dataIso);

Então tu pega uma data que vem em dd/MM/yyy e conferte para date utilizando este formato, ai depois que esta como date, tu utilizar o formato que quiser.

L

A minha intenção é pegar uma data no formato Iso 2019-09-27 e converter para BR 29/09/2016 e vice-versa

L
Solucao aceita

SOLUÇÃO 100% PRA QUEM PRECISAR graças a ajuda do rpassos81 que me fez enxergar o óbvio.

package br.com.syrecom.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * @author luis
 */
public class ConverteData {

    private final SimpleDateFormat formatIso;
    private final SimpleDateFormat formatBra;
    private Date date = null;

    public ConverteData() {
        this.formatIso = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        this.formatBra = new SimpleDateFormat("dd/MM/yyyy");
        
    }

    /**
     * Converte uma data no formato ABNT em formato ISO;
     *
     * @param dataBra Argumento que recebe data no formato ABNT(dd/MM/yyyy);
     * @return Uma data no formato ISO(yyyy-MM-dd).
     */
    public String parseIso(String dataBra) {
        try {
            date = this.formatBra.parse(dataBra);
            //date = this.formatIso.parse(dataBra);
            return (this.formatIso.format(date));
        } catch (ParseException e) {
            e.printStackTrace();
            return ("Parse Error");
        }
    }

    /**
     * Converte uma data no formato ISO em formato ABNT;
     *
     * @param dataIso Argumento que recebe data no formato ISO(yyyy-MM-dd);
     * @return Uma data no formato ABNT(dd/MM/yyyy).
     */
    public String parseBra(String dataIso) {
        try {
            date = this.formatIso.parse(dataIso);
            return (this.formatBra.format(date));
        } catch (ParseException e) {
            e.printStackTrace();
            return ("Parse Error");
        }
    }

}

Como usar:

ConverteData dt = new ConverteData();
System.out.println(dt.parseBra("2016-01-01 00:00:00"));
System.out.println(dt.parseIso("26/09/2016"));
Criado 27 de setembro de 2016
Ultima resposta 27 de set. de 2016
Respostas 3
Participantes 2