web-dev-qa-db-fra.com

Obtenir la date / heure actuelle en secondes

Comment obtenir la date et l'heure actuelles en secondes en Javascript?

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

.... vous donnera les secondes depuis minuit, le 1er janvier 1970

référence

422
sje397
 Date.now()

donne millisecondes depuis Epoch. Pas besoin d'utiliser new.

Découvrez la référence ici: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now

(Non pris en charge dans IE8.)

97

Utiliser new Date().getTime() / 1000 est une solution incomplète pour obtenir les secondes, car elle produit des horodatages avec des unités à virgule flottante.

const timestamp = new Date() / 1000; // 1405792936.933
// Technically, .933 would be milliseconds. 

Une meilleure solution serait:

// Rounds the value
const timestamp = Math.round(new Date() / 1000); // 1405792937

// - OR -

// Floors the value
const timestamp = new Date() / 1000 | 0; // 1405792936

Les valeurs sans float sont également plus sûres pour les instructions conditionnelles, car le float peut produire des résultats indésirables. La granularité que vous obtenez avec un float peut être plus que nécessaire.

if (1405792936.993 < 1405792937) // true
53
tfmontague

Sur la base de votre commentaire, je pense que vous recherchez quelque chose comme ceci:

var timeout = new Date().getTime() + 15*60*1000; //add 15 minutes;

Ensuite, dans votre chèque, vous vérifiez:

if(new Date().getTime() > timeout) {
  alert("Session has expired");
}
37
Nick Craver

Pour obtenir le nombre de secondes de l'époque Javascript, utilisez:

date = new Date();
milliseconds = date.getTime();
seconds = milliseconds / 1000;
16
Lazarus
// The Current Unix Timestamp
// 1443535752 seconds since Jan 01 1970. (UTC)

// Current time in seconds
console.log(Math.floor(new Date().valueOf() / 1000));  // 1443535752
console.log(Math.floor(Date.now() / 1000));            // 1443535752
console.log(Math.floor(new Date().getTime() / 1000));  // 1443535752
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

jQuery

console.log(Math.floor($.now() / 1000));               // 1443535752
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
8
blueberry0xff

Ces solutions JavaScript vous donnent les millisecondes ou les secondes écoulées depuis le 1er janvier 1970 à minuit.

La solution IE 9+ (IE 8 ou l'ancienne version ne supporte pas cela.):

var timestampInMilliseconds = Date.now();
var timestampInSeconds = Date.now() / 1000; // A float value; not an integer.
    timestampInSeconds = Math.floor(Date.now() / 1000); // Floor it to get the seconds.
    timestampInSeconds = Date.now() / 1000 | 0; // Also you can do floor it like this.
    timestampInSeconds = Math.round(Date.now() / 1000); // Round it to get the seconds.

Pour obtenir plus d'informations sur Date.now(): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now

La solution générique:

// ‘+’ operator makes the operand numeric.
// And ‘new’ operator can be used without the arguments ‘(……)’.
var timestampInMilliseconds = +new Date;
var timestampInSeconds = +new Date / 1000; // A float value; not an intger.
    timestampInSeconds = Math.floor(+new Date / 1000); // Floor it to get the seconds.
    timestampInSeconds = +new Date / 1000 | 0; // Also you can do floor it like this.
    timestampInSeconds = Math.round(+new Date / 1000); // Round it to get the seconds.

Faites attention à utiliser si vous ne voulez pas quelque chose comme ce cas.

if(1000000 < Math.round(1000000.2)) // false.

Vous pouvez utiliser un autre moyen d’obtenir du temps en secondes/millisecondes à compter du 1er janvier 1970:

var milliseconds = +new Date;        
var seconds = milliseconds / 1000;

Mais soyez prudent avec une telle approche, car il pourrait être difficile de la lire et de la comprendre.

1
tetta

Meilleurs raccourcis:

+new Date # Milliseconds since Linux Epoch
+new Date / 1000 # Seconds since Linux Epoch
Math.round(+new Date / 1000) #Seconds without decimals since Linux Epoch
1
dr.dimitru
Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000

Cela devrait vous donner les millisecondes à partir du début de la journée.

(Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000)/1000

Cela devrait vous donner des secondes.

(Date.now()-(Date.now()/1000/60/60/24|0)*24*60*60*1000)/1000

Identique à la précédente, sauf qu'un opérateur au niveau des bits est utilisé pour calculer le nombre de jours.

0
CEO RecDecLec