Geralmente existem 3 tipos de formatos de entrada de data JavaScript:
"2015-03-25" (O Padrão Internacional)
"25/03/2015"
"25 de março de 2015" ou "25 de março de 2015"
O formato ISO segue um padrão rígido em JavaScript.
Os outros formatos não são tão bem definido e pode ser específico do navegador.
Independentemente do formato de entrada, o JavaScript irá (por padrão) exibir datas completas formato de string de texto:
ISO 8601 é o padrão internacional para a representação de datas e vezes.
A sintaxe ISO 8601 (AAAA-MM-DD) também é o formato de data JavaScript preferido:
const d = new Date("2015-03-25");
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p id="demo"></p>
<script>
const d = new Date("2015-03-25");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
A data calculada será relativa ao seu fuso horário.
Dependendo do seu fuso horário, o resultado acima irá variar entre 24 e 25 de março.
As datas ISO podem ser escritas sem especificar o dia (AAAA-MM):
const d = new Date("2015-03");
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p id="demo"></p>
<script>
const d = new Date("2015-03");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
Os fusos horários irão variar o resultado acima entre 28 de fevereiro e 01 de março.
As datas ISO podem ser escritas sem mês e dia (AAAA):
const d = new Date("2015");
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p id="demo"></p>
<script>
const d = new Date("2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
Os fusos horários irão variar o resultado acima entre 31 de dezembro de 2014 e 01 de janeiro de 2015.
As datas ISO podem ser escritas com horas, minutos e segundos adicionados (AAAA-MM-DDTHH:MM:SSZ):
const d = new Date("2015-03-25T12:00:00Z");
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p>Separate date and time with a capital T.</p>
<p>Indicate UTC time with a capital Z.</p>
<p id="demo"></p>
<script>
const d = new Date("2015-03-25T12:00:00Z");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
A data e a hora são separadas por T maiúsculo.
A hora UTC é definida com uma letra maiúscula Z.
Se você quiser modificar a hora relativa ao UTC, remova o Z e adicione +HH:MM ou -HH:MM em vez de:
const d = new Date("2015-03-25T12:00:00-06:30");
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p>Modify the time relative to UTC by adding +HH:MM or subtraction -HH:MM to the time.</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML =
new Date("2015-03-25T12:00:00-06:00");
</script>
</body>
</html>
UTC (Hora Universal Coordenada) é igual a GMT (Hora Média de Greenwich).
A omissão de T ou Z em uma sequência de data e hora pode fornecer resultados diferentes em navegadores diferentes.
Ao definir uma data, sem especificar o fuso horário, o JavaScript usará o fuso horário do navegador.
Ao obter uma data, sem especificar o fuso horário, o resultado é convertido para o fuso horário do navegador.
Em outras palavras: Se uma data/hora for criada em GMT (Greenwich Mean Time), o a data/hora será convertida para CDT (horário de verão central dos EUA) se um usuário navegar do centro dos EUA.
As datas abreviadas são escritas com uma sintaxe "MM/DD/AAAA" como esta:
const d = new Date("03/25/2015");
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("03/25/2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
Em alguns navegadores, meses ou dias sem zeros à esquerda podem produzir um erro:
const d = new Date("2015-3-25");
O comportamento de "AAAA/MM/DD" é indefinido.
Alguns navegadores tente adivinhar o formato. Alguns retornarão NaN.
const d = new Date("2015/03/25");
O comportamento de "DD-MM-AAAA" também é indefinido.
Alguns navegadores tente adivinhar o formato. Alguns retornarão NaN.
const d = new Date("25-03-2015");
Datas longas são geralmente escritas com uma sintaxe "MMM DD AAAA" como esta:
const d = new Date("Mar 25 2015");
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("Mar 25 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
Mês e dia podem estar em qualquer ordem:
const d = new Date("25 Mar 2015");
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("25 Mar 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
E o mês pode ser escrito por extenso (janeiro) ou abreviado (janeiro):
const d = new Date("January 25 2015");
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("January 25 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
const d = new Date("Jan 25 2015");
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("Jan 25 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
As vírgulas são ignoradas. Os nomes não diferenciam maiúsculas de minúsculas:
const d = new Date("JANUARY, 25, 2015");
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("JANUARY, 25, 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
Se você tiver uma string de data válida, poderá usar o Método Date.parse()
para convertê-lo em milissegundos.
Date.parse()
retorna o número de milissegundos entre a data e janeiro 1, 1970:
let msec = Date.parse("March 21, 2012");
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Date.parse()</h2>
<p>Date.parse() returns the number of milliseconds between the date and January 1, 1970:</p>
<p id="demo"></p>
<script>
const msec = Date.parse("March 21, 2012");
document.getElementById("demo").innerHTML = msec;
</script>
</body>
</html>
Você pode então usar o número de milissegundos para convertê-lo em um objeto de data:
let msec = Date.parse("March 21, 2012");
const d = new Date(msec);
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Date.parse()</h2>
<p>Date.parse(string) returns milliseconds.</p>
<p>You can use the return value to convert the string to a date object:</p>
<p id="demo"></p>
<script>
let msec = Date.parse("March 21, 2012");
const d = new Date(msec);
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
Para uma referência completa da data, acesse:
Referência completa de data JavaScript.
A referência contém descrições e exemplos de todas as propriedades Date e métodos.