[Resolvido]Como converter String para Date?

deu certo agora valeu muito obrigado

porem agora esta com erro no dao a hora que ele vai pegar o local date

pst.setLocalDate(2, ordem_Producao.getData_abertura());
pst.setLocalDate(3, ordem_Producao.getData_fechamento());

antes era:

pst.setDate(2, ordem_Producao.getData_abertura());
pst.setDate(3, ordem_Producao.getData_fechamento());

pst.setDate(2, java.sql.Date.valueOf(ordem_Producao.getData_abertura()));
pst.setDate(3, java.sql.Date.valueOf(ordem_Producao.getData_fechamento()));

Muito obrigado deu certo de fazer essa conversão porem eu estou com mais uma duvida pois não consigo pegar do banco a date no formato “yyyy/mm/dd” e converter para “dd/mm/yyyy” e manter em date para depois eu converter em Localdate.

A converção deu certo eu so preciso passar a date nesse formato. “dd/mm/yyyy”

Instant instant = Instant.ofEpochMilli(data.getTime());
LocalDate Dateab = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalDate();

O campo data_abertura e data_fechamento do seu objeto não são LocalDate?
Pra recuperar da tabela o java.sql.Date da tabela você pode usar:
LocalDate localDate = new java.sql.Date(dateCampoTabela.getTime()).toLocalDate();
E o atributo LocalDate do seu objeto já armazena a data que você quer, se você quer exibí-lo em determinado formato, cabe à você formatar a saída da forma que desejar, seja: “dd/MM/yyyy” ou “MM/yyyy” tanto faz.

São Localdate ta certo exatamente eu pego converto normalmente como você me falou agora eu não estou conseguindo e formatar

eu não fiz assim não, eu peguei o valor assim:

Date d = (rs.getDate("data_fechamneto"));

E converti em LocalDate depois asim:

Instant instant = Instant.ofEpochMilli(d.getTime());
LocalDate Dateab = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalDate();

e a sim tinha dado certo porem a data fica como esta no banco

    Date d = (rs.getDate("data_fechamneto"));
    Instant instant = d.toInstant();
	
	LocalDate Dateab = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalDate();
	
	DateTimeFormatter df = DateTimeFormatter.ofPattern("dd/MM/yyyy");
	String dateFormat = df.format(Dateab);

Obrigado antônio mais eu preciso que ela mantenha em localdate e não em String só troque o formato

Ele não vai “mudar o formato”, você terá de formatar a saída da forma que desejar, se quiser que apareça neste formato: dd/MM/yyyy em algum TextField por exemplo você deve formatá-lo da forma que desejar… Para aparecer somente mês e ano, a ordem de mês, ano e dia, etc…
Você pode mostrar o mesmo atributo LocalDate ao mesmo tempo em cinco componentes e em cada um deles em uma formatação diferente.

@Daniel95 obrigado pelas dicas mais teria como você me dar 1 exemplo de como fazer essa formatação isso que eu não estou sabendo fazer

Da mesma forma que foi falado acima. Onde você está mostrando está data?
Por exemplo, se fosse em um JTextField você poderia fazer:
textField.setText(DateTimeFormatter.ofPattern(“dd/MM/yyyy”).format(atributoLocalDate));

Nossa @Daniel95 sou grato a você Obrigado deu certinho eu consegui fazer a conversão aqui.

era para colocar no grid e eu usei como vc me passou e deu certo

tabelaOperacao.setValueAt(DateTimeFormatter.ofPattern("dd/MM/yyyy").format(op.getData_abertura()), i, 2);

Ou seja, como resultado final você está usando uma string e não LocalDate.
Sendo assim não é necessário converter de Date para LocalDate:

    Date data = rs.getDate("data_fechamneto");
	SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
	tabelaOperacao.setValueAt(df.format(data), i, 2);

Não eu estou usando LocalDate mesmo e no codigo que vc tinha me passado converta o localdate para String

Eu sei mas se você vai pegar do banco de dados para um componente não precisa usar localdate.

     Date data = rs.getDate("data_fechamneto");
	 SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
	 tabelaOperacao.setValueAt(df.format(data), i, 2);

Caminho mais curto.

Isso:

DateTimeFormatter df = DateTimeFormatter.ofPattern("dd/MM/yyyy");
String dateFormat = df.format(Dateab);

Igual:

String df = DateTimeFormatter.ofPattern("dd/MM/yyyy").format(Dateab);

DateTimeFormatter.ofPattern("dd/MM/yyyy").format(op.getData_abertura()) retorna String.

O objeto dele tem atributo LocalDate portanto a conversão de java.sql.Date para LocalDate seria no DAO para popular os objetos e a conversão seria no momento de popular a tabela. Agora, se está tudo junto a consulta ao banco com o modelo e a view ai pode ser direto mesmo ou tanto faz…
Eu ainda aconselharia a popular a tabela com o objeto mesmo e criar um renderer para formatar da forma desejada. Se ele utilizar um sorter na tabela por exemplo e o atributo da coluna da data for String iria bagunçar tudo. Mas se isso não faz impacto nenhum no projeto dele então…

Concordo com você, mas ele ainda não está usando como LocalDate.