Comment puis-je obtenir un horodatage en JavaScript?
Quelque chose de similaire à l'horodatage d'Unix, c'est-à-dire un seul nombre qui représente l'heure et la date actuelles. Soit comme un nombre ou une chaîne.
Comment puis-je obtenir un horodatage en JavaScript?
Quelque chose de similaire à l'horodatage d'Unix, c'est-à-dire un seul nombre qui représente l'heure et la date actuelles. Soit comme un nombre ou une chaîne.
+ new Date()
Un opérateur unaire comme plus
déclenche le valueOf
méthode dans le Date
objet et il renvoie l'horodatage (sans aucune altération).
Détails:
Sur presque tous les navigateurs actuels, vous pouvez utiliser Date.now()
pour obtenir l'horodatage UTC dans millisecondes; une exception notable à cela est IE8 et plus tôt (voir table de compatibilité).
Vous pouvez facilement faire une cale pour cela, cependant:
if (!Date.now) {
Date.now = function() { return new Date().getTime(); }
}
Pour obtenir l'horodatage dans secondes, vous pouvez utiliser:
Math.floor(Date.now() / 1000)
Ou bien vous pouvez utiliser:
Date.now() / 1000 | 0
Ce qui devrait être légèrement plus rapide, mais aussi moins lisible (aussi voir cette réponse).
Je recommanderais d'utiliser Date.now()
(avec cale de compatibilité). C'est un peu mieux car il est plus court et ne crée pas de nouveau Date
objet. Cependant, si vous ne voulez pas un shim et une compatibilité maximale, vous pouvez utiliser la méthode "old" pour obtenir l'horodatage millisecondes:
new Date().getTime()
Lequel vous pouvez ensuite convertir en secondes comme ceci:
Math.round(new Date().getTime()/1000)
Et vous pouvez également utiliser le valueOf
méthode que nous avons montré ci-dessus:
new Date().valueOf()
Horodatage en millisecondes
var timeStampInMs = window.performance && window.performance.now && window.performance.timing && window.performance.timing.navigationStart ? window.performance.now() + window.performance.timing.navigationStart : Date.now();
console.log(timeStampInMs, Date.now());
J'aime ça, parce que c'est petit:
+new Date
J'aime aussi cela, car il est tout aussi court et compatible avec les navigateurs modernes, et plus de 500 personnes ont voté que c'est mieux:
Date.now()
JavaScript fonctionne avec le nombre de millisecondes depuis l'époque alors que la plupart des autres langues fonctionnent avec les secondes. Vous pouvez travailler avec des millisecondes mais dès que vous passez une valeur à PHP, les fonctions natives de PHP échoueront probablement. Donc, pour être sûr que j'utilise toujours les secondes, pas les millisecondes.
Cela vous donnera un horodatage Unix (en secondes):
var unix = Math.round(+new Date()/1000);
Cela vous donnera les millisecondes depuis l'époque (pas l'horodatage Unix):
var milliseconds = new Date().getTime();
var time = Date.now || function() {
return +new Date;
};
time();
Je fournis plusieurs solutions avec des descriptions dans cette réponse. N'hésitez pas à poser des questions si quelque chose n'est pas clair
PS: malheureusement quelqu'un a fusionné ceci à la réponse supérieure sans donner de crédit.
Solution rapide et sale:
Date.now() /1000 |0
Attention: il pourrait casser en 2038 et renvoyer des nombres négatifs si vous faites le
|0
la magie. UtilisationMath.floor()
au lieu de cela à ce moment
var timestamp = Number(new Date()); // current time as number
jQuery fournit sa propre méthode pour obtenir l'horodatage:
var timestamp = $.now();
(D'ailleurs, il ne fait que mettre en œuvre (new Date).getTime()
expression)
Juste pour ajouter, voici une fonction pour retourner une chaîne d'horodatage en Javascript. Exemple: 15:06:38
function displayTime() {
var str = "";
var currentTime = new Date()
var hours = currentTime.getHours()
var minutes = currentTime.getMinutes()
var seconds = currentTime.getSeconds()
if (minutes < 10) {
minutes = "0" + minutes
}
if (seconds < 10) {
seconds = "0" + seconds
}
str += hours + ":" + minutes + ":" + seconds + " ";
if(hours > 11){
str += "PM"
} else {
str += "AM"
}
return str;
}
console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch
En plus des autres options, si vous voulez une dateformat ISO, vous pouvez l'obtenir directement
console.log(new Date().toISOString());