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