A classe Date já esta descontinuada a muito tempo!
D
darlan_machado1 like
Veja, você tem essa data, o que ocorre é que o objeto Date da classe java.util.Date não tem o formato que você espera ver.
Note que ele apresenta:
Aug: equivalente a agosto ou 08
10: refere-se ao dia do mês, no caso, 10
2018: refere-se ao ano, 2018.
00:00:00: Refere-se a hora, como você não especificou a hora, ele entende que seja meia noite, ou seja, zero hora.
Fri: refere-se ao dia da semana, no caso, sexta-feira.
D
darlan_machado1 like
Você sabe, por acaso, se ele está mexendo com java 8 ou superior ou está mexendo num sistema legado, que usa, por exemplo, java 1.4?
J
jeankarlos
eh java 8 sim porem mudei tudo para LocalDate e usei o link que que @FearX me mandou para tentar fazer a conversão.
porem da o seguinte erro
java.time.fprmat.DateTimeParseException txt ‘10/08/2018’ coould not be parsed at index 0
J
jeankarlos
Vou explicar o meu contexto eu fiz um banco com o campo date e quando eu pego oque o usuário digita pelo gettext vem em String dai tenho que fazer essa conversão.
Existe outra maneira de fazer essa inserção no banco talves eu esteja fazendo da maneira errado ou mais dificil?
L
LuanFroehlich1 like
Posta o código pra gente te ajudar
J
jeankarlos
O codigo que esta fazendo a conversao e esta com erro eh esse se caso quiser mais algum codigo me fala que eu posto
Emendando uma pergunta na outra, por qual motivo eu faço uma conversão de String para qualquer outro tipo primitivo?
J
jeankarlos
@ENGENHEIRO_DE_SOFTWA eu criei um banco com um campo tipo Date e eu pego o valor digitado pelo usuário pelo gettext que vem em String so que como o banco esta em date tenho que converter
D
Daniel95
Acabei de testar o código e está funcionando normal.
Tem certeza que o texto vem neste formato “dd/MM/yyyy”?
E você importou as classes corretamente?
Olhe no primeiro código que eu mandei, ele está utilizando LocalDate e não LocalDateTime, coloque exatamente este código: LocalDate datetime = LocalDate.parse(txt_Data_Abertura.getText(), DateTimeFormatter.ofPattern(“dd/MM/yyyy”));
String newstring = datetime.format(DateTimeFormatter.ofPattern(“dd/MM/yyyy”));
System.out.println(newstring);
D
Daniel95
Se no código que eu mandei acima ainda der erro, de um System.out.print no getText e posta o que ele mostra.
J
jeankarlos
deu certo agora valeu muito obrigado
porem agora esta com erro no dao a hora que ele vai pegar o local date
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”
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.
J
jeankarlos
São Localdate ta certo exatamente eu pego converto normalmente como você me falou agora eu não estou conseguindo e formatar
Obrigado antônio mais eu preciso que ela mantenha em localdate e não em String só troque o formato
D
Daniel95
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.
J
jeankarlos
@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
D
Daniel95
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));
J
jeankarlos
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);
A
AntonioSantos
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:
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…
A
AntonioSantos
Concordo com você, mas ele ainda não está usando como LocalDate.