web-dev-qa-db-fra.com

Comment puis-je obtenir des secondes depuis Epoch en Javascript?

Sous Unix, je peux exécuter date '+%s' pour obtenir le nombre de secondes depuis Epoch. Mais je dois interroger cela dans un navigateur frontal, pas dans le back-end.

Existe-t-il un moyen de connaître les secondes depuis Epoch en JavaScript?

131
Alice
var seconds = new Date() / 1000;

Ou, pour une version moins pirate:

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

N'oubliez pas de Math.floor() ou Math.round() pour arrondir au nombre entier le plus proche, sinon vous pourriez obtenir une décimale très étrange que vous ne souhaitiez pas:

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

Essaye ça:

new Date().getTime() / 1000

Vous voudrez peut-être utiliser Math.floor() ou Math.round() pour couper une fraction en millisecondes.

55
Tomasz Nurkiewicz

Tu voulais des secondes depuis Epoch

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

exemple d'utilisation

foo = seconds_since_Epoch();
36
user40521

Les solutions ci-dessus utilisent des propriétés d'instance. Une autre méthode consiste à utiliser la propriété de classe Date.now :

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

Si vous voulez que time_in_seconds soit un entier, vous avez 2 options:

a. Si vous voulez être cohérent avec la troncature de style C:

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

b. Si vous souhaitez simplement connaître la définition mathématique de la division entière, prenez la parole. (La division entière de Python fait cela).

_time_in_seconds_int = Math.floor(time_in_seconds);
_
10
dotgc

Si vous voulez seulement des secondes sous forme de nombre entier sans décimales représentant les millisecondes encore attachées, utilisez ceci:

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

Vous pouvez créer un objet Date (qui contiendra l'heure actuelle), puis appeler getTime() pour obtenir le ms depuis l'époque.

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

Si vous voulez des secondes, divisez le chiffre par 1000:

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

Ma manière préférée:

var msEpoch = (+new Date());
var sEpoch = (+new Date()) / 1000;

Pour plus d'informations sur le +sauter dans le terrier du lapin .

4
Vinay