Réponses:
var seconds = new Date().getTime() / 1000;
.... vous donnera les secondes depuis minuit, le 1er janvier 1970
Date.now()
donne millisecondes depuis l'époque. Pas besoin 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 dans IE8.)
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.
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
Math.round(new Date() / 1000)
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");
}
// 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>
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.
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.
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.
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
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. :)