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")[0];
    var dataSplit = dataNascimento.split("-");
    return dataSplit[2] + "/" + dataSplit[1] + "/" + dataSplit[0];
}

image

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


Dessa forma ficou bem legal !!!


Massa @Wesley.Oliveira , obrigado!