--- title: Date slug: Web/JavaScript/Reference/Global_Objects/Date tags: - Date - JavaScript translation_of: Web/JavaScript/Reference/Global_Objects/Date ---
Cria uma instância JavaScript de Date
que representa um único momento no tempo. Objetos Date são baseados no valor de tempo que é o número de milisegundos desde 1º de Janeiro de 1970 (UTC).
new Date(); new Date(valor); new Date(dataString); new Date(ano, mês, dia, hora, minuto, segundo, milissegundo);
{{ note('Note que objetos JavaScript Date
só podem ser instanciados chamando JavaScript Date
como um construtor: chamá-lo como uma função regular (ou seja, sem o operador new) irá retornar uma string ao invés de um objeto Date
; ao contrário de outros tipos de objetos JavaScript, objetos JavaScript Date
não têm sintaxe literal.') }}
Nota: Quando Date for chamado como um construtor com mais de um argumento, se os valores forem maiores do que seu limite lógico (e.g. se 13 for fornecido como um valor para mês ou 70 for o valor para minuto), o valor adjacente será ajustado. E.g. new Date(2013, 13, 1) é equivalente a new Date(2014, 1, 1), ambos criam uma data para 2014-02-01 (note que o mês começa em 0). Similarmente para outros valores: new Date(2013, 2, 1, 0, 70) é equivalente a new Date(2013, 2, 1, 1, 10), pois ambos criam uma data para 2013-03-01T01:10:00.
value
dataString
year
month
day
hour
minute
second
millisecond
Date.length
é 7. Esse é o número de argumentos manipulados pelo construtor.{{ jsOverrides("Function", "properties", "prototype") }}
{{ jsOverrides("Function", "Methods", "now", "parse", "UTC") }}
Date
Todas as instâncias Date
são herdadas de {{jsxref("Date.prototype")}}. O objeto protótipo do construtor Date
pode ser modificado para afetar todas as instâncias de Date
.
{{ page("/en-US/docs/JavaScript/Reference/Global_Objects/Date/prototype", "Methods") }}
Os seguintes exemplos mostram várias formas de se criar datas em JavaScript:
Nota: a conversão de strings com o construtor de Date
(Date.parse
é equivalente ao contrutor) é fortemente desencorajada devido às inconsistências e diferenças dos navegadores.
var today = new Date(); var birthday = new Date("December 17, 1995 03:24:00"); var birthday = new Date("1995-12-17T03:24:00"); var birthday = new Date(1995,11,17); var birthday = new Date(1995,11,17,3,24,0);
Para criar e obter datas entre os anos 0 e 99 os métodos {{jsxref("Date.prototype.setFullYear()")}} e {{jsxref("Date.prototype.getFullYear()")}} devem ser usados.
var data = new Date(98, 1); // Dom Fev 01 1998 00:00:00 GMT+0000 (GMT)
// Métodos em desuso, 98 mapeia para 1998 aqui também
data.setYear(98); // Dom Fev 01 1998 00:00:00 GMT+0000 (GMT)
data.setFullYear(98); // Sab Fev 01 0098 00:00:00 GMT+0000 (BST)
Os seguintes exemplos mostram como determinar o tempo decorrido entre duas datas no JavaScript em milissegundos.
Devido aos tamanhos diferentes dos dias (devido à mudança do horário de verão), meses e dias, expressar o tempo decorrido em unidades maiores que horas, minutos e segundos requer analisar os problemas e deve ser cuidadosamente investigado antes de se tentar utilizar.
// usando objetos Date var inicio = Date.now(); // o evento para o tempo vai aqui: facaAlgoPorUmLongoTempo(); var fim = Date.now(); var decorrido = fim - inicio; // tempo decorrido em milisegundos
// utilizando métodos embutidos var inicio = new Date(); // o evento para o tempo vai aqui: facaAlgoPorUmLongoTempo(); var fim = new Date(); var decorrido = fim.getTime() - inicio.getTime(); // tempo decorrido em milisegundos
// para testar uma função e obter o seu retorno function imprimirTempoDecorrido(fTeste) { var nHoraInicial = Date.now(), vRetorno = fTeste(), nHoraFinal = Date.now(); alert("Tempo decorrido: " + String(nHoraFinal - nHoraInicial) + " milisegundos"); return vRetorno; } retornoDaSuaFuncao = imprimirTempoDecorrido(suaFuncao);
Nota: Em navegadores que suportam a API de Desempenho Web ({{domxref("window.performance", "Web Performance API", "", 1)}}) com o recurso de tempo de alta resolução, {{domxref("Performance.now()")}} pode fornecer medidas de tempo decorrido mais confiáveis e precisas do que {{jsxref("Date.now()")}}.
Especificação | Estado | Comentário |
---|---|---|
{{SpecName('ESDraft', '#sec-date-objects', 'Date')}} | {{Spec2('ESDraft')}} | |
{{SpecName('ES6', '#sec-date-objects', 'Date')}} | {{Spec2('ES6')}} | |
{{SpecName('ES5.1', '#sec-15.9', 'Date')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES1')}} | {{Spec2('ES1')}} | Definição inicial. Implementado no JavaScript 1.1. |
{{ CompatibilityTable() }}
Recurso | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suporte Básico | {{CompatVersionUnknown()}} [1] | {{CompatVersionUnknown()}} [1] | {{CompatVersionUnknown()}} [2] | {{CompatVersionUnknown()}} [1] | {{CompatVersionUnknown()}} [1] |
Recurso | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suporte Básico | {{CompatVersionUnknown()}} | {{CompatVersionUnknown()}} | {{CompatVersionUnknown()}} | {{CompatVersionUnknown()}} | {{CompatVersionUnknown()}} | {{CompatVersionUnknown()}} |
[1] Alguns navegadores pode ter problemas quando verificam datas: 3/14/2012 blog from danvk Comparing FF/IE/Chrome on Parsing Date Strings
[2] ISO8601 Date Format não é suportado o Internet Explorer 8 e outras versões podem ter problemas quando convertem datas