Data inválida com ResolverStyle.STRICT

Porque todas as datas que estou inserindo agora são invlaidas?

  if(TxtCodCliente.getText().equals("") && TxtNome.getText().equals("")){
             JOptionPane.showMessageDialog(null, "Você deve informar o código ou o nome do Cliente que deseja pesquisar !", "Aviso!!!", JOptionPane.WARNING_MESSAGE);
               return;
           }
           
            if(TxtDataInicial.getText().equals("  /  /    ") || TxtDataFinal.getText().equals("  /  /    ")){
             JOptionPane.showMessageDialog(null, "Você deve informar o período em que deseja pesquisar !", "Aviso!!!", JOptionPane.WARNING_MESSAGE);
               return;
           }
            
            
         try {

        
            DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd/MM/yyyy")
            .withResolverStyle(ResolverStyle.STRICT);
            String frmPgto ="";
            String nome = "%"+TxtNome.getText()+"%";
            VendasDAO dao = new VendasDAO();
            
                LocalDate DataInicio = LocalDate.parse(TxtDataInicial.getText(), formato);
		LocalDate DataFim = LocalDate.parse(TxtDataFinal.getText(), formato);
                
                if (radioBtnDin.isSelected()){
                // pegar a string e jogar no banco de dados
                     frmPgto = "Dinheiro";
                }
                if (radioBtnCartao.isSelected()){
                // pegar a string e jogar no banco de dados
                     frmPgto = "Cartão";
                }
                   
                if (radioBtnCheque.isSelected()){
                // pegar a string e jogar no banco de dados
                     frmPgto = "Cheque";
               }
                       
                if (radioBtnNota.isSelected()){
                // pegar a string e jogar no banco de dados
                     frmPgto = "Outros";
                }       
                       
            String codigo = TxtCodCliente.getText();
            if (!"".equals(codigo) ) {

		int CodCliente  = Integer.parseInt(codigo);
                List<Vendas>lista = dao.listarVendasPorClintenoPeriodo(CodCliente, frmPgto, DataInicio, DataFim);
		DefaultTableModel dados = (DefaultTableModel)TabelaHistorico.getModel();
		dados.setNumRows(0);

		for (Vendas v : lista) {
			dados.addRow(new Object[]{
				v.getId(),
				v.getData_venda(),
				v.getCliente().getNome(),
				v.getTotal_venda(),
				v.getObservacao()
			});
		}
	} else{
                
                        List<Vendas>lista = dao.listarVendasPorClintePorNome(nome, frmPgto, DataInicio, DataFim);
                        DefaultTableModel dados = (DefaultTableModel)TabelaHistorico.getModel();
                        dados.setNumRows(0);

                        for (Vendas v:lista){
                            dados.addRow(new Object[]{

                                v.getId(),
                                v.getData_venda(),
                                v.getCliente().getNome(),
                                v.getTotal_venda(),
                                v.getObservacao()
                            });

                        }
                
                
            }
              } catch (DateTimeParseException e) {
    // data inválida
               // JOptionPane.showMessageDialog(null, "Data Inválida");
                }  

Aqui vc diz que este DateTimeFormatter vai aceitar datas no formato “dd/MM/yyyy” - ou seja, dia e mês com 2 dígitos, ano com 4 dígitos, e todos separados por /.

E aqui vc passa as datas para fazer o parsing. Se alguma das strings (TxtDataInicial.getText() ou TxtDataFinal.getText()) não estiver no formato indicado, dará erro.

E como vc usou ResolverStyle.STRICT, além de obedecer o formato, a data tem que ser válida (por exemplo, “30/02/2024” dará erro).

Enfim, veja o que tem nesses campos. Pois se deu erro, é porque não são datas no formato esperado.

Além disso, você poderia exibir a mensagem da exceção, só para saber o que aconteceu (em vez de "Data inválida", coloque e.getMessage(), vai mostrar detalhes do erro).

Recebi este erro:

Text: ‘01/01/2024’ could not be parsed. LocalDate from temporalaccessor {MonthofYear=1, YearOfEra=2024, DayofMonth=1}, ISO of type Java.time.format.parsed.

Me está dizendo que essa data não pode ser convertida.

Como vc usou ResolverStyle.STRICT, então o formato deve ser dd/MM/uuuu:

DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd/MM/uuuu")
    .withResolverStyle(ResolverStyle.STRICT);

Isso acontece porque yyyy também precisa da era (AC ou DC). No modo default a era é implicitamente DC, mas no modo STRICT é preciso informá-la explicitamente.

Já com uuuu isso não é necessário. A explicação completa sobre essas diferenças está aqui.

Exato, dei uma lida e a solução foi essa mesma. Perfeito. Muito obrigado. Funcionando tudo agora