Objeto date em Javascript

Trabalhar com datas utilizando o Objeto date em Javascript é relativamente simples, você pode tanto obter quanto criar uma data em um formato convencional, UTC, GMT e assim por diante.

O objeto date cria instâncias de datas, das quais você pode utilizar vários métodos para acessar ou modificar o ano, mês, dia, hora, minutos, segundos e milissegundos.

Criar uma data sem passar um parâmetro para o objeto date em Javascript, produz uma data baseada no horário local do computador cliente:

var data = new Date();

document.write( data );
// Resultado: Mon Apr 21 2014 10:26:53 GMT-0300 (Hora oficial do Brasil) 

Criar uma data sem a palavra new, também produz uma data baseada no horário do computador local:

var data = Date();

document.write( data );
// Resultado: Mon Apr 21 2014 10:28:32 GMT-0300 (Hora oficial do Brasil)  

Vejamos os parâmetros que podem ser passados para o objeto date em Javascript.

Parâmetros do Objeto date em Javascript

Um dos parâmetros que você pode passar como data para o objeto date, é o número de milissegundos desde 1 de janeiro de 1970 às 12:00 horas () até agora ou uma data específica (veja mais detalhes):

var data = new Date(1398087284822);

document.write( data );
// Resultado: Mon Apr 21 2014 10:34:44 GMT-0300 (Hora oficial do Brasil)

No exemplo acima, 1398087284822 representa o número de milissegundos desde 1 de janeiro de 1970 às 12:00 horas até agora. Isso produz exatamente a data 21/04/2014 às 10:34:44.

Você também pode passar uma data em texto puro, desde que essa data esteja no formato apropriado:

var data = new Date('April 20, 1987 10:00:15');

document.write( data );
// Resultado: Mon Apr 20 1987 10:00:15 GMT-0300 (Hora oficial do Brasil)   

A data "April 20, 1987 10:00:15", produz exatamente 20/04/1987 às 10:00:15. Você também pode omitir a hora se desejar:

var data = new Date('April 20, 1987');

document.write( data );
// Resultado: Mon Apr 20 1987 00:00:00 GMT-0300 (Hora oficial do Brasil)   

Agora nossa hora foi configurada para 00:00:00, por omissão.

O padrão que eu mais utilizo é os números do ano, dia, mês (de 0 a 11), hora, minutos, segundos e milissegundos:

var data = new Date(2014, 3, 21, 10, 49, 00);

document.write( data );
// Resultado: Mon Apr 21 2014 10:49:00 GMT-0300 (Hora oficial do Brasil)    

Isso pode ser um pouco confuso para quem está iniciando, pois, os meses iniciando do zero (0), Abril, ao invés de 4, é 3.

Neste formato você também pode omitir as horas:

var data = new Date(2014, 3, 21);

document.write( data );
// Resultado: Mon Apr 21 2014 00:00:00 GMT-0300 (Hora oficial do Brasil)    

Métodos do Objeto date em Javascript

Depois que você tem uma instância do objeto date, você pode utilizar vários métodos para obter os valores dessa data. Por exemplo:

  • getFullYear – Obtém o ano com 4 dígitos
  • getHours – Obtém a hora
  • getMilliseconds – Os milissegundos
  • getMinutes – Os minutos
  • getSeconds – Os segundos
  • getMonth – O mês de 0 a 11 (o mês atual -1)
  • getDay – O número do dia equivalente ao dia da semana. Zero para domingo, até 6 para sábado.
  • getDate – O dia do mês

Exemplo:

var data = new Date(2014, 3, 21, 11, 02, 25);

// Dia
document.write( 'Dia: ' + data.getDate() + '<br>' );
// Mês
document.write( 'Mês: ' + data.getMonth() + '<br>' );
// Ano
document.write( 'Ano: ' + data.getFullYear() + '<br>' );
// Horas
document.write( 'Horas: ' + data.getHours() + '<br>' );
// Minutos
document.write( 'Minutos: ' + data.getMinutes() + '<br>' );
// Segundos
document.write( 'Segundos: ' + data.getSeconds() + '<br>' );

Temos o resultado:

Dia: 21
Mês: 3
Ano: 2014
Horas: 11
Minutos: 2
Segundos: 25

A maioria dos métodos get contém métodos set equivalente, por exemplo, setSeconds, setYear e assim por diante. O único método que não tem um set equivalente, é o getDay.

Por exemplo:

var data = new Date(2014, 3, 21, 11, 02, 25);

// Seta o ano de 2010 na data
data.setFullYear(2010);

// Dia
document.write( 'Dia: ' + data.getDate() + '<br>' );
// Mês
document.write( 'Mês: ' + data.getMonth() + '<br>' );
// Ano (Agora é 2010)
document.write( 'Ano: ' + data.getFullYear() + '<br>' );
// Horas
document.write( 'Horas: ' + data.getHours() + '<br>' );
// Minutos
document.write( 'Minutos: ' + data.getMinutes() + '<br>' );
// Segundos
document.write( 'Segundos: ' + data.getSeconds() + '<br>' );

Também existem métodos específicos para o Tempo Universal Coordenado (UTC):

  • getUTCFullYear – Obtém o ano com 4 dígitos (UTC)
  • getUTCHours – Obtém a hora (UTC)
  • getUTCMilliseconds – Os milissegundos (UTC)
  • getUTCMinutes – Os minutos (UTC)
  • getUTCSeconds – Os segundos (UTC)
  • getUTCMonth – O mês de 0 a 11 (o mês atual -1) – UTC
  • getUTCDay – O número do dia equivalente ao dia da semana. Zero para domingo, até 6 para sábado. (UTC)
  • getUTCDate – O dia do mês (UTC)

Outro método que pode ser interessante para sua aplicação, é o getTimezoneOffset(), que obtém a diferença em minutos do computador local para o UTC. No meu caso, estou em Minas Gerais, o valor retornado é 180.

var data = new Date();

document.write( data.getTimezoneOffset() );
// 180

Os métodos abaixo convertem a data para uma string formatada:

toString(): Retorna em uma string com o horário local.

var data = new Date();

document.write( data.toString() );
// Mon Apr 21 2014 11:21:15 GMT-0300 (Hora oficial do Brasil) 

toGMTString(): Formata a string utilizando os padrões GMT.

var data = new Date();

document.write( data.toGMTString() );
// Mon, 21 Apr 2014 14:22:16 GMT  

toLocaleDateString() e toLocaleTimeString(): Resultam na data e no horário, respectivamente, utilizando a data do computador local.

var data = new Date();

document.write( data.toLocaleDateString() + ' ' + data.toLocaleTimeString() );
// segunda-feira, 21 de abril de 2014 11:24:20 

toLocaleString(): Retorna uma string com o formato da data local

var data = new Date();

document.write( data.toLocaleString() );
// segunda-feira, 21 de abril de 2014 11:25:24 

toUTCString(): Formata a string usando os padrões UTC.

var data = new Date();

document.write( data.toUTCString() );
// Mon, 21 Apr 2014 14:26:14 GMT

Dependendo da versão do seu navegador, você também consegue obter o número de milissegundos desde 1 de janeiro de 1970 às 12:00 horas utilizando getTime():

var data = new Date();

document.write( data.getTime() );
// 1398090547039

Você também pode utilizar três métodos diretamente com o objeto date, são eles: UTC, parse e now:

document.write( Date.UTC(2014,3,21) + '<br>' );
// 1398038400000

document.write( Date.parse(2014,3,21) + '<br>' );
// 1398038400000

document.write( Date.now() + '<br>' );
// 1398090720495

Porém, como você pode perceber, o valor retornado é o número de milissegundos desde 1 de janeiro de 1970 às 12:00 horas até agora para (now) ou a data especificada em parse ou UTC.

Links úteis

Abaixo, alguns links úteis para completar seu conhecimento:

Outras aulas

Caso tenha perdido a aula anterior, segue o link:

Próxima aula:

Caso queira visualizar todas as aulas dessa sessão em ordem cronológica invertida: