1
resposta

Acredito que a resposta correta não é o recomendado pela documentação

Embora funcione passar uma string no formato "yyyy,MM,dd", pelo que pesquisei não vi essa indicação de formato. Tenho minhas dúvidas de que isso funcione em todos os navegadores da forma esperada. Pelo que vi na documentação, o formato que deve ser passado é na versão da ISO8601. "ECMAScript defines a string interchange format for date-times based upon a simplification of the ISO 8601 Extended Format. The format is as follows: YYYY-MM-DDTHH:mm:ss.sssZ"

Nesse caso, acho que o mais correto é passar uma string no formato "yyyy-MM-dd". Se passar assim, pelo que testei, pode causar um efeito inesperado por causa da omissão da hora, pois o javascript considerará que é meia noite e tentará fazer o cálculo do fuso horário. No caso nosso subtrairá -3 que dará no dia anterior. Mas se passar "yyyy-MM-dd 00:00", o javascript não tentará fazer o cálculo do fuso horário, pois passamos explicitamente a hora a ser considerada.

1 resposta

Olá, Welton! Tudo bem contigo?

De fato, a documentação do ECMAScript especifica que o formato recomendado é o da ISO8601, que segue o padrão "yyyy-MM-ddTHH:mm:ss.sssZ". Esse formato é amplamente suportado pelos navegadores e evita possíveis problemas com fusos horários.

No exemplo que você mencionou, a opção correta seria a B, que utiliza o formato "yyyy-MM-dd". Essa é a forma mais segura de criar um objeto Date a partir de uma string, pois evita confusões com fusos horários.

Ao passar apenas a data no formato "yyyy-MM-dd", o JavaScript considerará a hora como meia-noite e pode tentar fazer o cálculo do fuso horário. Isso pode causar resultados inesperados, como subtrair um dia da data. Para evitar esse problema, é recomendado passar a hora explicitamente, como você mencionou, utilizando o formato "yyyy-MM-dd 00:00".

Lembre-se sempre de verificar a documentação e seguir as melhores práticas para evitar possíveis inconsistências ou comportamentos indesejados.

Espero ter ajudado e bons estudos!