Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

SimpleDateFormat

Boa tarde!

Estou com problemas para fazer a saída de uma data formatada. Estou recebendo a data com a seguinte formatação "2020-01-25T14:01:34.31Z", o primeiro SimpleDateFormat, estou conseguindo pegar a data, sem o horário, porém no formato yyyy-MM-dd, quando tento fazer o segundo sdf, ele mostra 13-07-0030. O que estou fazendo de errado?

  SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd");
                    SimpleDateFormat sdfDDMMAAAA = new SimpleDateFormat("dd-MM-yyyy");

                    try {
                        Date dateSysCreatedDateHour = sdf.parse(sysCreatedDateHour);
                        String sysCreatedDateFormat = sdf.format(dateSysCreatedDateHour);
                        System.out.println(sysCreatedDateFormat);
                        Date dateSysCreatedDateFormat = sdfDDMMAAAA.parse(sysCreatedDateFormat);
                        System.out.println(sdfDDMMAAAA.format(dateSysCreatedDateFormat));
                    } catch (java.text.ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

Obrigado!

2 respostas

Fala @gchiarapa,

Os pontos são:

  • Seu sdfDDMMAAAA está no padrão dd-MM-yyyy.
  • Seu dateSysCreatedDateFormat representa uma referência Date válido no padrão yyyy-MM-dd.

Aí meu amigo, é aplicado a máscara dd-MM-yyyy na data yyyy-MM-dd e gera essa loucura que viu.

O importante é... o que desejamos formatar corresponder a exata ordem que colocamos na máscara(ou, padrão) de conversão.

Quando a API já encontra a diferença e quebra(lançando uma exceção, ou, coisa do tipo) fica mais fácil, o problema é quando ela aceita... aí meu amigo... muita paciência até encontrar o ponto.

Belê?

Bons estudos.

solução!

Oi Bruno, consegui converter a data fazendo assim:

                        //convert the date
                        Date dateSysCreatedDateHour = sdf.parse(value.getTesteCaseDataDeliveryTIMDM());
                        String sysCreatedDateFormat = sdfDDMMAAAA.format(dateSysCreatedDateHour);
                        testeCaseDataHourDeliveryTIMDM = value.getTesteCaseDataDeliveryTIMDM().substring(11, 19);
                        testeCaseDataDeliveryTIM = sysCreatedDateFormat + " - " + testeCaseDataHourDeliveryTIMDM;
                        value.setTesteCaseDataDeliveryTIMDM(testeCaseDataDeliveryTIM);

Obrigado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software