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