Obtenez la date / heure actuelle en quelques secondes

Réponses:

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

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

Référence

sje397
la source
13
Bien que cela soit exact, quand serait-il utile? :)
Nick Craver
6
@Nick - Je pense que tous les exemples sont nécessairement spéculatifs et sembleront artificiels - mais je vais prendre une photo :) Supposons que vous avez horodaté les données avec le temps Unix et que vous voulez déterminer leur âge. Plus encore, je pense que c'est ce que l'on entend le plus probablement par «la date / heure actuelle en secondes»; juste mon instinct.
sje397
3
Une application où j'en avais besoin était de travailler avec un backend PHP car la fonction time () le renvoie déjà. C'est également idéal pour un horodatage car vous pouvez facilement faire la différence entre time () étant notre heure actuelle et un horodatage d'une heure précédente qui avait été stocké dans une base de données, par exemple lorsqu'un utilisateur a publié quelque chose. Dans le cas où vous souhaitez obtenir une heure formatée comme '22 octobre 2015', vous pouvez créer votre propre fonction pour la renvoyer d'un horodatage comme argument ou en utiliser une déjà ici sur Stack. Quoi qu'il en soit, j'espère que cela vous donnera un aperçu de la date à laquelle cela serait utile. @NickCraver
uhfocuz
21
Il convient de noter que vous souhaitez envelopper cela dans Math.floor (), sinon vous obtenez une décimale.
David Webber
11
Une façon utile serait de calculer le temps écoulé entre deux fois.
Zac
65

L'utilisation new Date().getTime() / 1000est 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 flottants sont également plus sûres pour les instructions conditionnelles, car le flottant peut produire des résultats indésirables. La granularité que vous obtenez avec un flotteur peut être plus que nécessaire.

if (1405792936.993 < 1405792937) // true
tfmontague
la source
1
Totalement d'accord 👍 UtilisationMath.round(new Date() / 1000)
gdibble
37

Sur la base de votre commentaire, je pense que vous cherchez quelque chose comme ça:

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");
}
Nick Craver
la source
16

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

date = new Date();
milliseconds = date.getTime();
seconds = milliseconds / 1000;
Lazare
la source
9

// 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>

myrtille0xff
la source
3

Ces solutions JavaScript vous donnent les millisecondes ou les secondes depuis minuit, le 1er janvier 1970.

La solution IE 9+ (IE 8 ou l'ancienne version ne prend pas en charge 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.

Soyez prudent à utiliser, si vous ne voulez pas quelque chose comme ce cas.

if(1000000 < Math.round(1000000.2)) // false.
Константин Ван
la source
2
Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000

Cela devrait vous donner les millisecondes 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 quelques secondes.

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

Identique à la précédente, mais utilise un opérateur au niveau du bit pour fixer le nombre de jours.

PDG RecDecLec
la source
1

Vous pouvez rencontrer une autre façon d'obtenir le temps en secondes / millisecondes depuis le 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.

tetta
la source
Je ne sais pas car l'utilisation des effets secondaires du langage est une manière plus élégante.
tomazahlin
1

De 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
dr.dimitru
la source
0

Un jour de 2020, dans Chrome 80.0.3987.132, cela donne 1584533105

~~(new Date()/1000) // 1584533105
Number.isInteger(~~(new Date()/1000)) // true
etoricky
la source
-1

Pour obtenir le nombre total de secondes de la journée d'aujourd'hui:

getTodaysTotalSeconds(){
    let date = new Date();        
    return +(date.getHours() * 60 * 60) + (date.getMinutes() * 60);
}

J'ai +en retour qui reviennent int. Cela peut aider d'autres développeurs. :)

Sachin Shah
la source