Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema com o DataHelper

Boa noite, estou tendo problemas ao inserir a data na aplicação. Se coloco alguma data ímpar, ela é mostrada corretamente no console.log. Porém, se coloco uma data par, o mês tem um decréscimo de uma unidade no console.log. Acredito que seja um erro na minha função TextToDate( ).

class DateHelper {

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

    TextToDate(texto){
        return new Date(texto.split('-').map((item, indice) => item%2 ? item : item - 1));
    }

}
class NegociacaoController {

    constructor() {

        let $ = document.querySelector.bind(document);
        this._inputData = $('#data');
        this._inputQtd = $('#quantidade');
        this._inputValor = $('#valor');

    }

    get inputData(){
        return this._inputData;
    }

    get inputQtd(){
        return this._inputQtd;
    }

    get inputValor(){
        return this._inputValor;
    }


    adiciona(event) {

        event.preventDefault();

        let helper = new DateHelper();

        let negociacao = new Negociacao(
            helper.TextToDate(this._inputData.value),
            this._inputQtd.value,
            this.inputValor.value
        )

        console.log(negociacao);

        console.log(helper.DateToText(negociacao.data));

    }

}
1 resposta
solução!

Bom dia.

Você usou o módulo no item e não no índice por isso o resultado bizarro.

Sua implementação

return new Date(texto.split('-').map((item, indice) => item%2 ? item : item - 1));

A correta é

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

Outro ponto: você mudou os nomes dos métodos da classe para inglês. Ok, mas feriu a convenção de que métodos da classe começam com minúsculo.

Sucesso e bom estudo.