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

[Dúvida] Data mostrada no dia anterior

Olá.

No momento 03:13 do vídeo dessa aula, pode ser visto que a data mostrada no console está no dia anterior à data inserida no input do tipo date do formulário.

screenshot da tela mostrando dias diferentes no input e no console

Entendo que isso tem a ver com questões de timezone, mas acredito que isso afete a validação da idade. Por exemplo:

dataNascimento.getDate();

Esse código continua a retornar o dia 03. Na hora de validar uma idade no extremo, ele pode dizer que uma pessoa já é maior de idade um dia antes de completar 18 anos.

Por favor, como eu faria para que retornasse a data correta que se encontra no input? Uma alternativa que eu encontrei nesse link do Stack Overflow é usar o split. No entanto, eu continuo sem entender o motivo de funcionar assim.

const dataNascimento = new Date(campo.value.split('-'));
console.log(dataNascimento) // retorna Mon Jan 04 1999 00:00:00 GMT-0200 (Horário de Verão de Brasília)

Obrigado.

1 resposta
solução!

Resolvido.

Continuando o vídeo da aula, percebi que a Mônica acaba utilizando o getUTCDate() ao invés do getDate(), o que resolve o problema da timezone e retorna a data no dia correto.

dataNascimento.getDate(); // 3
dataNascimento.getUTCDate(); // 4

Desse modo, para imprimir na tela a data correta, sem a necessidade do split, é possível usar o toUTCString():

console.log(dataNascimento); // retorna  Sun Jan 03 1999 22:00:00 GMT-0200 (Horário de Verão de Brasília)
console.log(dataNascimento.toUTCString()); // retorna Mon, 04 Jan 1999 00:00:00 GMT