Como posso obter segundos desde a época em Javascript?


152

No Unix, eu posso correr date '+%s'para obter a quantidade de segundos desde a época. Mas preciso consultá-lo no front-end do navegador, não no back-end.

Existe uma maneira de descobrir segundos desde a época em JavaScript?

Respostas:


246
var seconds = new Date() / 1000;

Ou, para uma versão menos hacky:

var d = new Date();
var seconds = d.getTime() / 1000;

Não se esqueça de Math.floor()ou Math.round()para arredondar para o número inteiro mais próximo ou você pode obter um decimal muito estranho que você não quer:

var d = new Date();
var seconds = Math.round(d.getTime() / 1000);

8
var seconds = new Date() / 1000;<- que tipo de magia arcana é essa?
Martin Wickman

3
Re: Arcane Magic: Por estes documentos , o Javascript sabe como converter um objeto Date para um número. Isso significa que você pode digitar Number(new Date())para obter um número, ou mesmo +(new Date()), ou usar qualquer instância de Data em um contexto numérico como new Date()/1000e Javascript converterá essa instância de Data em um número para trabalhar com suas equações matemáticas.
dpmott

59

Tente o seguinte:

new Date().getTime() / 1000

Você pode usar Math.floor()ou Math.round()cortar a fração de milissegundos.


39

Você queria segundos desde a época

function seconds_since_epoch(){ return Math.floor( Date.now() / 1000 ) }

exemplo de uso

foo = seconds_since_epoch();

3
Essa deve ser a resposta, pois leva em consideração o decimal.
James Pacote

11

As soluções acima usam propriedades da instância. Outra maneira é usar a propriedade de classe Date.now:

var time_in_millis = Date.now();
var time_in_seconds = time_in_millis / 1000;

Se você deseja que time_in_seconds seja um número inteiro, você tem 2 opções:

uma. Se você deseja ser consistente com o truncamento no estilo C:

time_in_seconds_int = time_in_seconds >= 0 ?
                      Math.floor(time_in_seconds) : Math.ceil(time_in_seconds);

b. Se você deseja apenas ter a definição matemática da divisão inteira, basta usar a palavra. (A divisão inteira do Python faz isso).

time_in_seconds_int = Math.floor(time_in_seconds);

9

Se você deseja apenas segundos como um número inteiro sem os decimais representando milissegundos ainda anexados, use o seguinte:

var seconds = Math.floor(new Date() / 1000);

5

Você pode criar um objeto Date (que terá a hora atual) e depois chamar getTime()para obter as ms desde a época.

var ms = new Date().getTime();

Se você quiser segundos, divida-o por 1000:

var sec = new Date().getTime() / 1000;




0
EPOCH means time from 01 January 1970
var date = new Date();
Following line will return the number of milliseconds from 01 Jaunary 1970
var ms = date.getTime();
Following line will convert milliseconds to seconds
var seconds = Math.floor(ms/1000);
console.log("Seconds since epoch =",seconds);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.