2
respostas

"Isso" não encaixa em um "Date"? Se vira! - a solução do instrutor parece estar incorreta

O exercício propõe o desafio abaixo:

Parta do princípio que você tem a seguinte variável:

let dataString = '17-05-2016';

E que usará o construtor de Date, que está preparado para receber uma data no formato ano/mes/dia.

Escreva um código que altere dataString para que seu conteúdo fique compatível com o formato ano/mes/dia. No final, instancie uma Date, exibindo no console seu valor.

As soluções propostas pelo exercício são as seguintes:

let dataString = '17-05-2016';

dataString = dataString.split('-').reverse().join('/');

let data = new Date(dataString);

console.log(data);

ou

let dataString = '17-05-2016';

let data = new Date(dataString.split('-').reverse().join('/'));
console.log(data);

Teoricamente a saída do console deveria ser:

2016/05/17

Contudo, o método join não está gerando nenhuma modificação, nas duas soluções propostas. Utilizando ou não o join a saída obtida é sempre a seguinte:

Tue May 17 2016 00:00:00 GMT-0300 (Horário Padrão de Brasília)

Para imprimir no formato solicitado pelo exercício utilizei a seguinte função:

function toStringDate(objDate){
  return `${objDate.getFullYear()}/${objDate.getMonth()}/${objDate.getDate()}`;
}
2 respostas

Fala ai Frederico, tudo bem? As soluções propostas pelo instrutor estão corretas, a diferença está que o Date também aceita receber os valores como um array, onde cada posição seria [ano, mes, dia].

Por isso com ou sem o join a saída é a mesma, pois, ele aceita as duas abordagens, no caso:

[2016, 5, 17] // sem o join
'2016/05/17' // com join

Espero ter ajudado

Todas essas maneiras são válidas, o instrutor fez o certo, mostrar mais de um caminho. Bom, claro que a última é bem mais interessante né? haha, ainda assim ele apenas mostrou diversas soluções, não que alguma esteja "errada".