Skip to main content

Olá pessoal!



Estou tentando fazer isso a uns 3 dias, desisti e vim pedir arrego procês.



Faço uma requisição HTTP e recebo um JSON no seguinte formato:



{


“cpf”: “00011122233”,


“nome”: “John Doe”,


“datanascimento”: “1955-05-29T00:00:00”


}



Eu preciso pegar a data de nascimento e colocar no formato “dd/mm/aaaa” para fazer uma confirmação com o cliente.



Como faço isso?



Depois de muitas tentativas só consegui chegar aqui:



function run(response) {


var parsedResponse = JSON.parse(response);


var data = parsedResponse@datanascimento;


return data;


}



Que agora não está mais funcionando 🫥

Oii @Ricardo_da_Silveira!



Tenta essas funções:



function formataData(data){

let data2 = new Date(data);

let dataFormatada = padTo2Digits((data2.getDate() )) + "/" + padTo2Digits((data2.getMonth() + 1)) + "/" + data2.getFullYear();

return dataFormatada;

}



function padTo2Digits(num) {

return num.toString().padStart(2, '0');

}



Você chama a formataData(data), a mesma vai te retornar a data já formatada. Fiz o teste com a sua data e funcionou corretamente.


Olá @Jessica_Vaz , muito obrigado pela tua resposta!



Não deu certo pra mim, eu abri para executar um script, com a variável de entrada “response” (que veio da requisição), e coloquei dessa forma:



function run(response) {

var parsedResponse = JSON.parse(response);

var data = parsedResponse@datanascimento;

return data

}



function padTo2Digits(num) {

return num.toString().padStart(2, '0');

}



function formataData(data){

let data2 = new Date(data);

let dataFormatada = padTo2Digits((data2.getDate() )) + "/" + padTo2Digits((data2.getMonth() + 1)) + "/" + data2.getFullYear();

return dataFormatada;

}



O que fiz de errado?



Muito obrigado!!!


Boa tarde @Ricardo_da_Silveira



Nesse ponto do código ao acessar o campo datanascimento deve-se acessar com ponto( . ) ao invés de arroba(@).





Olha se isso resolve o seu problema!!!


Agora saiu alguma coisa, mas não foi a data formatada, o resultado foi esse:



5/29/1985 12:00:00 AM


Você precisaria de qual formatação de data ?


Seria essa aqui: “DD/MM/AAAA”


Esse script abaixo retorna o formato que você quer, é necessário apenas uma adaptação pegando a sua variável:





const data = '1955-05-29T00:00:00';



// Cria um objeto Date a partir da data de nascimento



const dateResponse = new Date(data);



// Formata a data no formato dd/mm/yyyy



const dataFormatada = dateResponse.toLocaleDateString('pt-BR', { day: '2-digit', month: '2-digit', year: 'numeric' });



console.log(dataFormatada); // 29/05/1955


Oi @Aline_Camargos !



O script ficou dessa forma:



function run(response) {

var parsedResponse = JSON.parse(response);

var dataNascimento = parsedResponse.datanascimento;

const date = new Date(dataNascimento);

const dataFormatada = date.toLocaleDateString('pt-BR', { day: '2-digit', month: '2-digit', year: 'numeric' });

return dataFormatada

}







E essa foi a resposta:



Tuesday, May 28, 1985



ps.: A data que usei foi “1985-05-29T00:00:00”


Tem dois errinhos no seu código:


Você esqueceu de chamar a função, e para acessar objetos no JS se utiliza . ou ‘nome_do_campo’]



Ele vai ficar assim:



function run(response) {

var parsedResponse = JSON.parse(response);

var data = formataData(parsedResponse.datanascimento);

return data

}



function padTo2Digits(num) {

return num.toString().padStart(2, '0');

}



function formataData(data){

let data2 = new Date(data);

let dataFormatada = padTo2Digits((data2.getDate() )) + "/" + padTo2Digits((data2.getMonth() + 1)) + "/" + data2.getFullYear();

return dataFormatada;

}



Testei aqui e retornou certinho:




Realizei o teste no Console do navegador, por isso tem algumas diferenças, mas o correto para se usar no blip foi o que te mandei.


Perfeito @Jessica_Vaz ! Agora foi, muito obrigado! Tenho zero intimidade com javascript, daí é um martírio toda vez que tenho que trabalhar com ele 😕



Mas surgiu um outro problema 🙃



A data que está no JSON é essa aqui: “1985-05-29T00:00:00”, mas o resultado saiu “28/05/1985”. Sabes o porque disso, e, sem querer abusar muito, mas já abusando, como resolver?


Estranho, porque executando no visual, retorno veio certinho!




Toooop demais 😃


Screenshot from 2022-12-28 14-24-03


Que estranho, tenta dessa forma:



function run(response) {

var parsedResponse = JSON.parse(response);;

var data = formataData(parsedResponse.datanascimento);

return data

}



function formataData(data){

return new Date(data).toLocaleString('pt-Br', { timeZone: 'America/Sao_Paulo' });;

}


Deu “Invalid Date”. Coloquei exatamente o script acima.


Só pra atualizar, resolvi o problema adicionando + 1 ao dia (assim como no mês):



let dataFormatada = padTo2Digits((data2.getDate() + 1)) + "/" + padTo2Digits((data2.getMonth() + 1)) + "/" + data2.getFullYear();



Obrigado, @Jessica_Vaz e @Aline_Camargos !


❤️


@Ricardo_da_Silveira , @Aline_Camargos e @Jessica_Vaz :



Acredito que vocês estejam fazendo conversão de data quando na vdd um simples split com inversão de posição resolveria a situação, não?



O que vcs acham deste JS, fazendo split e simplesmente invertendo a ordem do dia e ano?



function run(responseContact) {

var contact = JSON.parse(responseContact);

var dataNascimento = contact.datanascimento.split("T")l0];

var dataSplit = dataNascimento.split("-");

return dataSplita2] + "/" + dataSplita1] + "/" + dataSplita0];

}





image



Obs.: o script foi sugerido pela IA do ChatGPT, só fiz alguns ajustes! 😉


Dessa forma ficou bem legal !!!


Massa @Wesley.Oliveira , obrigado!


Comente