Se esse método já retorna um Date
, então bastaria fazer:
Date data = this.txtDataRecebimento.getDate();
Não tem porque transformar a data em string, para depois transformar em data de novo…
Antes de prosseguir, entenda uma coisa:
Datas NÃO têm formato
Uma data é apenas um conceito, uma ideia: ela representa um ponto na linha do tempo.
Por exemplo, a data de “15 de janeiro de 2020”, representa isso: o ponto específico do calendário que corresponde ao dia 15 do mês de janeiro do ano de 2020. Para expressar essa ideia em forma de texto, eu posso escrevê-la de diferentes formas:
- 15/01/2020 (um formato bem comum em muitos países, incluindo o Brasil)
- 1/15/2020 (o irritante formato americano, invertendo o dia e mês)
- 2020-01-15 (o formato ISO 8601)
- Quinze de Janeiro de 2020 (em bom português)
- January 15th, 2020 (em inglês)
- 2020年1月15日 (em japonês)
- e muitos outros…
Repare que cada um dos formatos acima é diferente, mas todos representam a mesma data (os mesmos valores numéricos do dia, mês e ano).
Quando você salva uma data no banco de dados, ela é gravada em algum formato interno que só interessa ao banco de dados, mas que não importa para você. O que importa é: a data não está no formato X ou Y. O banco só guarda os valores (como ele faz não importa).
Quando você consulta a data no banco (com um SELECT
), ou mostra na tela (com println
), é claro que a data é mostrada em algum formato, mas isso não quer dizer que ela está naquele formato. Não está. Internamente ela só tem valores numéricos que representam o ponto específico do calendário que ela representa. Quando vc imprime a data, esses valores são convertidos para algum formato.
No caso do Java, datas são representadas por Date
(ou, nas versões mais novas, por LocalDate
, LocalDateTime
, etc). Essas são classes que só tem valores numéricos. Ao imprimir com println
, esses valores são convertidos para algum formato (para uma String
contendo um texto que representa a data).
Sendo assim, você pode simplesmente salvar o Date
no banco. Todas as API’s de banco de dados possuem a opção de salvar um objeto diretamente, então se o campo no banco de dados é do tipo DATE
(ou DATETIME
, TIMESTAMP
, etc), não precisa converter a data para nenhum formato. Basta passar o Date
diretamente.
Claro, se o campo for VARCHAR
, aí teria que converter mesmo (ou mude para o tipo correto, que é o mais indicado).