351 votes

Comment obtenir la date et/ou l'heure actuelle en secondes ?

Comment obtenir la date et/ou l'heure actuelle en secondes à l'aide de Javascript ?

3 votes

3 votes

Sachez que la réponse acceptée produira un nombre à virgule flottante.

534voto

sje397 Points 23619
var seconds = new Date().getTime() / 1000;

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

Référence

19 votes

Bien que cela soit exact, quand cela pourrait-il être utile ? :)

0 votes

@sje397 - Oui... mais la question (comme la plupart des questions sur le SO) est plus susceptible de résoudre un problème de santé publique. pratique Pouvez-vous me donner un exemple où vous voudriez afficher ce résultat ?

7 votes

@Nick - Je pense que tous les exemples sont nécessairement spéculatifs et sembleront artificiels - mais je vais tenter ma chance :) Supposons que vous ayez des données horodatées avec le temps Unix, et que vous vouliez déterminer leur âge. En outre, je pense que c'est ce que l'on entend le plus souvent par "la date/heure actuelle en secondes" ; c'est juste mon intuition.

123voto

Konstantin Points 469
 Date.now()

donne les millisecondes écoulées depuis l'époque. Il n'est pas nécessaire d'utiliser new .

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

(Non pris en charge par IE8.)

12 votes

Cette réponse de quelques millisecondes ne répond même pas à la question posée. "Comment obtenir la date et l'heure actuelles en secondes ?"

3 votes

Date.now() / 1000 pour répondre à la question elle-même

2 votes

@magician11 - Date.now() / 1000 ne répond pas non plus à la question, car il donne des valeurs avec des fractions partielles en millisecondes

110voto

tfmontague Points 172

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

new Date() / 1000; // 1405792936.933

// Technically, .933 would be in milliseconds

Utilisez plutôt :

Math.round(Date.now() / 1000); // 1405792937

// Or
Math.floor(Date.now() / 1000); // 1405792936

// Or
Math.ceil(Date.now() / 1000); // 1405792937

// Note: In general, I recommend `Math.round()`,
//   but there are use cases where
//   `Math.floor()` and `Math.ceil()`
//   might be better suited.

En outre, les valeurs sans flottants sont plus sûres pour les instructions conditionnelles, car la granularité obtenue avec les flottants peut entraîner des résultats indésirables. En effet, la granularité obtenue avec les flottants peut entraîner des résultats indésirables :

if (1405792936.993 < 1405792937) // true

Avertissement : Les opérateurs bitwise peuvent poser des problèmes lorsqu'ils sont utilisés pour manipuler des horodatages. Par exemple, (new Date() / 1000) | 0 peut également être utilisé pour "plancher" la valeur en secondes, mais ce code pose les problèmes suivants :

  1. Par défaut, les nombres Javascript sont de type 64 bits (double précision) flottants, et les opérateurs bitwise convertissent implicitement ce type en entiers 32 bits signés. On peut soutenir que le type ne devrait pas être implicitement converti par le compilateur, et que le développeur devrait plutôt effectuer la conversion là où c'est nécessaire.
  2. L'horodatage signé sur 32 bits, produit par l'opérateur bitwise, provoque l'affichage de la date et de l'heure. année 2038 comme indiqué dans les commentaires.

4 votes

Tout à fait d'accord Utiliser Math.round(new Date() / 1000)

0 votes

Notez que l'utilisation de l'opérateur bitwise pour le sol entraînera la conversion de la valeur en un entier signé de 32 bits. Voir Problème de l'année 2038 .

0 votes

@Ryan - merci j'ai mis à jour ma réponse pour décourager l'utilisation de | 0

37voto

Nick Craver Points 313913

D'après 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");
}

15voto

Lazarus Points 17526

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

date = new Date();
milliseconds = date.getTime();
seconds = milliseconds / 1000;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X