¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como Converter uma String de Data em Java.sql.Date com o Formato Correto

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 34 Vistas
0
Cargando...

Olá Especialistas,

Estou recebendo uma data no formato de string 2007-06-30 do R/3. Como posso converter essa string em uma data no formato 30/06/2007? Preciso usar java.sql.Date.

O código a seguir não está funcionando. Para executar o código abaixo, preciso usar java.util.Date. Não posso usar java.util.Date, pois o programa Web Dynpro utiliza java.sql.Date.

	SimpleDateFormat sdf1 = new SimpleDateFormat("dd/mm/yyyy");
	Date d = null;
	d = sdf1.parse(wdContext.currentContextElement().getDateClicked());

Saudações,

Gary

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

3 Respuestas

0
Cargando...

Olá,

Esqueci sua solicitação original, os diferentes formatos de data podem ser alcançados usando apenas dois SimpleDateFormats desta forma:

String ds1 = "2007-06-30";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy");
String ds2 = sdf2.format(sdf1.parse(ds1));
System.out.println(ds2); //será 30/06/2007

Atenciosamente,

Fabian

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá,

Se entendi corretamente, você precisa desta data escrita como java.sql.Date?

String ds=wdContext.currentContextElement().getDateClicked();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");	
java.sql.Date sd = new java.sql.Date(sdf.parse(ds).getTime());

Quatro observações:

"Transportamos" a data de java.util.Date para java.sql.Date como milissegundos desde 1 de janeiro de 1970, 00:00:00 GMT. Consulte o contrato de java.sql.Date.

Você usou dd/mm/yyyy em vez de dd/MM/yyyy, mas mm são os minutos e não os meses, consulte o contrato de [SimpleDateFormat|http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html] (JSE 1.4).

Você não definiu o fuso horário para DateFormat, então está usando TimeZone.getDefault(). Este é o fuso horário padrão do seu JVM e depende (se você não o alterou) do fuso horário do seu sistema. Por exemplo, eu moro na Alemanha, o fuso horário do meu sistema é atualmente CET (que é UTC+1) já que mudamos do horário de verão no último domingo. Como você está apenas analisando a data e não o fuso horário, você espera que a data (a string) esteja no seu fuso horário padrão. Se não estiver, você precisa definir o fuso horário no qual espera que a data esteja (por exemplo, sdf1.setTimeZone(TimeZone.getTimeZone("UTC"));) antes de analisar a data. Isso pode parecer insignificante no seu caso, mas pode resultar em comparações de datas e análises de datas inesperadas ao redor da mudança de dia.

°SimpleDateFormat não é seguro para threads, então não o armazene em cache! Isso não é mencionado na documentação do JSE 1.4, mas pode ser consultado no [banco de dados de bugs da Sun|http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=96669461418011fffffffffb70dd6b6e88eb5?bug_id=4264153]. Se você não estiver satisfeito com o tratamento padrão de data e hora (por exemplo, por motivos de desempenho), pode considerar uma alternativa como [Joda Time|http://joda-time.sourceforge.net/index.html], que é distribuído sob a licença [ASF 2.0|http://joda-time.sourceforge.net/license.html].

Atenciosamente,

Fabian

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá,

Ao analisar uma data usando SimpleDateFormat, lembre-se de fornecer o formato no qual a data será inserida no SDF. No seu caso, crie uma instância de SimpleDateFormat para yyyy-mm-dd. Isso deve funcionar.

Obrigado,

Venkat

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?