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

Dúvidas na manipulação de datas

No meu helper eu tenho o seguinte código:

class DateHelper {
    constructor() {
        throw new Error("Essa classe não pode ser instânciada.");
    }

    static dataParaTexto(data) {

        return data.getDate() + "/" + (data.getMonth() + 1) + "/" + data.getFullYear();
    }

    static textoParaData(texto) {
        if(!/\d{4}-\d{2}-\d{2}/.test(texto)) throw new Error("Deve estar no formato aaaa-mm-dd.");
        return new Date(...texto.split('-').map((item, index) => item - item % 2));
    }
}

Quando eu uso o console do Chrome para fazer alguns testes algumas coisas parecem estranhas:

>  let teste = DateHelper.textoParaData('2016-00-20');
<. Wed Jan 20 2016 00:00:00 GMT-0200 (Horário brasileiro de verão)

>  teste = DateHelper.textoParaData('2016-01-20');
<. Wed Jan 20 2016 00:00:00 GMT-0200 (Horário brasileiro de verão)

>  teste = DateHelper.textoParaData('2016-11-20');
<. Sun Nov 20 2016 00:00:00 GMT-0200 (Horário brasileiro de verão)

>  teste = DateHelper.textoParaData('2016-12-20');
<. Fri Jan 20 2017 00:00:00 GMT-0200 (Horário brasileiro de verão)

As datas não apresentam da maneira correta algumas vezes. O que pode estar ocorrendo?

5 respostas

Encontrei onde estava os problemas no meu código:

static dataParaTexto(data) {

        return data.getDate() + "/" + (data.getMonth() **- 1**) + "/" + data.getFullYear();
    }

E também em:

return new Date(...texto.split('-').map((item, index) => item - **index** % 2));

Pequenos detalhes que fazem a diferença hehe. Um bom tempo pra achar os problemas mais valeu a experiência!!

solução!

Olá meu aluno, futuro cangaceiro em JavaScript! Há um pequeno deslize na implementação da lógica do seu método textoParaData.

Ele esta assim:

 static textoParaData(texto) {
        if(!/\d{4}-\d{2}-\d{2}/.test(texto)) throw new Error("Deve estar no formato aaaa-mm-dd.");
        return new Date(...texto.split('-').map((item, index) => item - item % 2));
    }

Onde esta item - item % 2 o correto é item - indice % 2. Lembre-se que esse código é o vudu que subtrai 1 do segundo item do array com as datas.

Abraço Elias!

Você encontrou enquanto eu respondia. Rápido!!!

Valeu Prof. Flávio acho que encontramos o erro no mesmo momento hehe.

Vudu foi boa kkkkk... mais esse lance de aproveitar o resto da divisão no decremento é uma boa sacada!!!

Obrigado pela ajuda.

Tranquilo meu aluno. E ainda tem mais dois cursos pela frente!!!!!! :)