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;