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

Datas em javascript

Pessoal, no vídeo, não é exibido ou comentado sobre datas. Mas caso houvesse a necessidade de obter uma data que foi selecionada, como seria? Tentei implementar, porém, não entendi como funciona em relação sobre. Mesmo se consigo obter uma data que eu selecionei e depois tento formatá-la usando o toLocaleToString(), o dia continua alterando

...
//Exemplo de data: 01/10/2020
var date = form.dateCollect.value;
const newDate = new Date(date);
var day = newDate.getDay(); // ou newDate.getDay().toLocaleToString()
console.log(day); // o dia sai como 03

Alguém teria como dar uma luz?

2 respostas
solução!

Olá Felipe, tudo bem com você?

Existem várias formas e eu vou mostrar 2:

1 . Fácil

<input type="date" name="date" id="date">

Temos um tipo para data e dentro do javascript poderíamos pegar:

console.log(date.valueAsDate)

E dessa forma já temos na formatação correta :)

2 . Um pouco chata pois tem que converter

Para essa daqui é interessante entender um pouco mais sobre os recursos avançados do javascript:

const resultado = date.value.split('/');

Aqui eu estou pegando o em formato textual e pedindo para ele dividir em pedaços sempre que encontrar uma /, então:

//Exemplo de data: 01/10/2020

data.split('/')

[ "01", "10", "2020" ]

E aqui podemos até utilizar um recurso novo do javascript que é o Destructuring Assignment, de forma que cada posição do array eu consigo extrair para uma variável, veja:

const [ dia, mes, ano ] = date.value.split('/')

Então a variável dia equivale ao 01, mes ao 10 e ano 2020

Agora que temos a data separada, o que podemos fazer é criar um objeto do tipo data, lembrando do formato:

  • ano
  • mes: Aqui é necessário sempre subtrair 1, pois Janeiro é o mês 0
  • dia
const [ dia, mes, ano ] = date.value.split('/')

const data = new Date( ano, Number(mes) - 1, dia);

// Equivale a:

const resultado = date.value.split('/');

const data = new Date( resultado[2], Number(resultado[1]) - 1, resultado[0])

Dessa forma também teremos um objeto do tipo Data construído da maneira correta :)

Nos cursos de Javascript Avançado, inclusive é trabalhado um pouco com essa questão de datas e como criar um formatador :)

Mas sinceramente a primeira maneira é a mais prática para essa questão de input

Se quiser saber mais sobre o Destructuring:

E o curso que tem um campo de datas e esse processo de conversão:

Abraços e Bons Estudos!

Show de bola Geovani!! Muito obrigado mesmo!!