Como obter um carimbo da hora em JavaScript?

Como posso obter um carimbo da hora em JavaScript?

Algo semelhante a Unix timestamp, ou seja, um único número que representa a hora e a data atuais. Seja como um número ou uma string.

Solução

Short & Snazzy:

+ new Date()

Um operador unário como plus aciona o método valueOf no objeto Date e retorna o carimbo da hora (sem qualquer alteração).

Detalhes:

Em quase todos os navegadores atuais você pode utilizar Date.now() para obter o carimbo de tempo UTC em millisegundos; uma exceção notável a isto é o IE8 e anteriores (veja tabela de compatibilidade).

Mas podes facilmente fazer um calço para isto:

if (!Date.now) {
    Date.now = function() { return new Date().getTime(); }
}

Para obter o carimbo da hora em segundos, você pode usar:

Math.floor(Date.now() / 1000)

Ou, alternativamente, você poderia usar:

Date.now() / 1000 | 0

O que deve ser ligeiramente mais rápido, mas também menos legível (também ver esta resposta).

Eu recomendaria utilizar Date.now() (com calço de compatibilidade). É ligeiramente melhor porque é mais curto & não cria um novo objeto Date. Entretanto, se você não quiser um calço & máxima compatibilidade, você poderia usar o método "antigo" para obter o carimbo de tempo em **milissegundos***:

new Date().getTime()

Que pode então converter para segundos como este:

Math.round(new Date().getTime()/1000)

E você também pode utilizar o método valueOf que mostramos acima:

new Date().valueOf()

**Temporestamp em milissegundos***

var timeStampInMs = window.performance && window.performance.now && window.performance.timing && window.performance.timing.navigationStart ? window.performance.now() + window.performance.timing.navigationStart : Date.now();

console.log(timeStampInMs, Date.now());
Comentários (16)
var time = Date.now || function() {
  return +new Date;
};

time();
Comentários (5)
var timestamp = Number(new Date()); // current time as number
Comentários (0)