[Resolvido]Como fazer pra digitar uma string em formato pt/br sendo que o padrão da classe é americano?

Boa noite pessoal!
Eu estou com um problema em uma aplicação web. Estou usando html e java. Na tela (html) eu tenho um campo para digitar a data, sendo que no meu banco (mysql) o tipo do dado está como Date, ou seja o usuário tem que digitar no padrão americano “AAAA/MM/DD” se não ocorre um erro, e é preferível que o usuário digite a data no formato “dd/MM/AAAA”. Qual a melhor forma de fazer essa conversão? Pode ser com a classe Date que hoje encontrasse depreciada?
Obs.: estou usando servlet para a comunicação entre a minha aplicação e as telas. No formato padrão ele cadastra normal.
Obrigado!

1 curtida

Você pode utilizar qualquer API de datas, e na hora de salvar no banco, você converte para o formato desejado utilizando formatters. Sugiro escolher LocalDate do pacote java.time (Java 8), e você pode utilizar DateTimeFormatter para converter para o formato desejado. Dê uma olhada na documentação e nesse tutorial sobre o formatter.

1 curtida

Mathob, agradeço desde já a disponibilidade em me ajudar.
Infelizmente dessa forma que vc tinha proposto não deu certo =/
Veja o código:

String dt_nascimento = "1992-02-03";//o banco aceita os dados desta maneira e eu preciso que o usuário digite 02/03/1992 e o banco não retorne a exceção.
                                
        try {
            DateTimeFormatter formatter =
                              DateTimeFormatter.ofPattern("ddMMyyyy");
            LocalDate date = LocalDate.parse(dt_nascimento, formatter);
            System.out.printf("%s%n", date);
        }
        catch (DateTimeParseException exc) {
            System.out.printf("%s is not parsable!%n", dt_nascimento);
            throw exc;      // Rethrow the exception.
        }

**ele retorna a seguinte exception**: java.time.format.DateTimeParseException: Text '1992-02-03' could not be parsed at index 5

Você usou de forma errada. Use assim:

String data = "21/04/2016";
DateTimeFormatter appFormatter = DataTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate appData = LocalDate.parse(data , appFormatter); //Data da aplicação

DateTimeFormatter dbFormatter = DataTimeFormatter.ofPattern("yyyy-MM-dd");
System.out.println(appData.format(dbFormatter); //Vai imprimir 2016-04-21

Desta forma resolveu o problema.
Muito obrigado!!!
Até mais.

Marque o tópico como resolvido :slight_smile: