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

Bug na validação de Datas do projeto Crud Memoteca da formação front-end

Eu fiz uma correção em um bug, que estava ocorrendo ao selecionar uma data superior a que estamos ao postar um pensamento. Exemplo: Hoje estamos no dia 06/10/2024, estava emitindo o alerta de erro somente ao selecionar uma data futura dois dias após a que estamos, então se eu tentasse postar uma data com o dia 07/10/2024 sendo que estamos no dia 06, nao ia emitir o alerta de erro. Eu fiz essa correção do bug e gostaria de compartilhar com os demais.

A alteração foi feita na função validarData(), o codigo estava assim:

function validarData(data) {
    const dataAtual = new Date();
    const dataInserida = new Date(data);
    return dataInserida <= dataAtual;
}

com a correção do bug, o código ficou assim:

function validarData(data) {
    const dataAtual = new Date();

    // Zera horas, minutos e segundos da data atual
    dataAtual.setHours(0, 0, 0, 0);

    // Converte a data inserida
    const dataInserida = new Date(data);

    // Zera horas, minutos e segundos da data inserida
    dataInserida.setHours(0, 0, 0, 0);

    console.log('Data atual:', dataAtual); // Log da data atual
    console.log('Data inserida:', dataInserida); // Log da data inserida

    // Verifica se a data inserida é maior que a data atual
    return dataInserida < dataAtual; // 
}

Eu zerei Horas, Minutos e Segundos: Ao usar dataAtual.setHours(0, 0, 0, 0) e dataInserida.setHours(0, 0, 0, 0), você está garantindo que as comparações entre as datas não sejam afetadas pelas horas, minutos ou segundos. Sem zerar essas partes, a comparação poderia falhar se, por exemplo, a data atual fosse 06/10/2024 10:30 e a data inserida fosse 06/10/2024 09:00. Nesse caso, a comparação dataInserida < dataAtual não funcionaria corretamente. Adicionei os consoles também para ajudar na depuração do código.

2 respostas
solução!

Espero que tenha ajudado

Oii, José Jhonata. Tudo bem?

Obrigada por compartilhar seu código com a comunidade Alura. Ótima sacada ao zerar as horas, minutos e segundos com setHours(0, 0, 0, 0), garantindo que a comparação seja justa entre as datas, independente do horário exato!

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!