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

Meus indices diferentes do exemplo

Eu percebi que meu split retorna os indices diferente do seu.

Passei no input a data 10-11-2018, e meu output dentro do map imprimiu a seguinte saída.

[indice 0] >>>"2018"[indice 1] >>> "10" [indice 2] >>> "11"

/**
     * Instructor's version
     * uses [spread function]
     * @param str
     */
    convertStringToDate2(str){
        return new Date(...
            str.split('-')
            .map(function(item, index){
        console.log(index, ">>>",item);
                return index === 2 ? item - 1 : item;
            }));
    }

Chamada a função:

let instructorDate = this.convertStringToDate2(this._dateInput.value);
5 respostas

Fala Erika, tudo bom?

O index no map, começa do 0, então a posição do mês sendo o segundo item fica quando o index for igual a 1

function convertStringToDate2(str){
    return new Date(...
        str.split('-')
        .map(function(item, index){
            console.log(index, ">>>",item);
            return index === 1 ? item - 1 : item; // o segundo parâmetro que contem o mês é o index 1, pois o primeiro index é o 0
        }));
}

Espero ter ajudado :)

Ola Mário, obrigada pela atenção.

Então, essa parte eu até entendo, mas quero entender o seguinte:

Supomos que eu tenha entrado com a data: 10/12/2018

Quando eu executo o split nessa string, tenho o seguinte resultado:

indice 0: 2018 [ano] indice 1: 10 [dia] indice 2: 12 [mês]

Ou seja, no exemplo explicado no vídeo, o mês ocupa o indice 1, e no meu caso, caiu no indice 2. Por que isso ocorre?

Perdoa se não fui clara rs

solução!

Isso é assim por causa da localidade do seu navegador. Se seu Chrome for em inglês ele retornará uma data num formato diferente. Se não me engano há um aviso meu que o Chrome deve estar em pt-br.

https://cursos.alura.com.br/course/javascript-es6-orientacao-a-objetos-parte-1/task/16495

Mas não se desespere. Essa exigência é apenas no início. Primeiro, porque o input type date não faz parte da especificação da W3C e na prática não é interessante utilizá-lo. Ele foi utilizado só para poder jogar mais pra frente a explicação que torna a forma com que lidamos com datas compatível com todos os navegadores.

Então, peço que continue com o curso até chegar na parte que o input date é removido e tudo funcionará como esperado.

Ou, você pode mudar a localidade do seu Chrome.

Sucesso e bom estudo minha aula.

Oi Erika!

Para ser mais preciso, você aprenderá isso na parte do do curso. Tudo bem?

https://cursos.alura.com.br/course/javascript-es6-orientacao-a-objetos-parte-2/task/17532

No caso, o problema não é no split, é no dado retornado por esse <input type="date"> .

Abraço!

Opa!

Obrigada pela explicação.