Entrada de Data

Geralmente, existem três tipos de formatos de entrada de data:

Tipo

Texto

Data ISO

"2015-03-25" (o padrão internacional)”

Data curta

"25/03/2015"

Data Longa

"March 25, 2015" ou "25 de março de 2015"

O formato ISO segue um padrão rigoroso em JavaScript.

Os outros formatos não são tão bem definidos e podem ser específicos do navegador.

Saída da Data

Independente do formato de entrada, o JavaScript (por padrão) gera datas em formato de texto completo:

Tue Mar 24 2015 21:00:00 GMT-0300 (Horário Padrão de Brasília)

Datas ISO do JavaScript

ISO 8601 é o padrão internacional para a representação de datas e horas.

A sintaxe ISO 8601 (AAAA-MM-DD) também é o formato de data JavaScript preferido:

Exemplo (data completa):

var d = new Date("2015-03-25");

A data calculada será relativa ao seu fuso horário.

Dependendo do seu fuso horário, o resultado acima varia entre 24 e 25 de março.

Datas ISO (ano e mês)

As datas ISO podem ser gravadas sem especificar o dia (AAAA-MM):

var d = new Date("2015-03");

Os fusos horários variam o resultado acima entre 28 de fevereiro e 01 de março.

Datas ISO (somente ano)

As datas ISO podem ser escritas sem mês e dia (AAAA):

var d = new Date("2015");

Os fusos horários variam o resultado acima entre 31 de dezembro de 2014 e 01 de janeiro de 2015.

Datas ISO (data e hora)

As datas ISO podem ser gravadas com horas, minutos e segundos adicionais (AAAA-MM-DDTHH: MM: SSZ):

var d = new Date("2015-03-25T12:00:00Z");

A data e a hora são separadas por um maiúsculo T.

A hora UTC é definida com uma letra maiúscula Z.

Se você deseja modificar a hora em relação ao UTC, remova o Z e adicione + HH: MM ou -HH: MM:

var d = new Date("2015-03-25T12:00:00-06:30");

UTC (Universal Time Coordinated) é o mesmo que GMT (Greenwich Mean Time).

Omitir T ou Z em uma sequência de data e hora pode gerar resultados diferentes em diferentes navegadores.

Fusos Horários

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 no fuso horário do navegador.

Em outras palavras: se uma data / hora for criada no GMT (horário de Greenwich), a data / hora será convertida em CDT (horário de verão central dos EUA) se um usuário navegar do centro dos EUA.

Datas Curtas

Datas curtas são gravadas com uma sintaxe "MM / DD / AAAA", como esta:

var d = new Date("03/25/2015");

ADVERTÊNCIAS!

Em alguns navegadores, meses ou dias sem zeros à esquerda podem gerar um erro:

var d = new Date("2015-3-25");

O comportamento de "AAAA / MM / DD" é indefinido.

Alguns navegadores tentarão adivinhar o formato. Alguns retornarão NaN.

var d = new Date("2015/03/25");

O comportamento de "DD-MM-AAAA" também é indefinido.

Alguns navegadores tentarão adivinhar o formato. Alguns retornarão NaN.

var d = new Date("25-03-2015");

Datas Longas

As datas longas costumam ser escritas com uma sintaxe "MMM DD AAAA", como esta:

var d = new Date("Mar 25 2015");

Mês e dia podem estar em qualquer ordem:

var d = new Date("25 Mar 2015");

E, o mês pode ser escrito na íntegra (janeiro) ou abreviado (janeiro):

 

var d = new Date("January 25 2015");
var d = new Date("Jan 25 2015");

Vírgulas são ignoradas. Os nomes não diferenciam maiúsculas de minúsculas:

var d = new Date("JANUARY, 25, 2015");

Entrada de Data - Analisando Datas

Se você tiver uma sequência de datas válida, poderá usar o Date.parse()método para convertê-la em milissegundos.

Date.parse() retorna o número de milissegundos entre a data e 1 de janeiro de 1970:
var msec = Date.parse("March 21, 2012");
document.getElementById("demo").innerHTML = msec;

Você pode usar o número de milissegundos para convertê-lo em um objeto de data.

var msec = Date.parse("March 21, 2012");
var d = new Date(msec);
document.getElementById("demo").innerHTML = d;