Question Comment obtenez-vous un horodatage en JavaScript?


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.


3358
2017-10-21 09:29


origine


Réponses:


Court et Snazzy:

+ 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());


4148
2017-10-21 09:32



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()

429
2018-02-18 00:33



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();

229
2018-05-11 22:27



var time = Date.now || function() {
  return +new Date;
};

time();

126
2017-10-21 10:05



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. Utilisation Math.floor() au lieu de cela à ce moment


95
2017-07-12 07:15



var timestamp = Number(new Date()); // current time as number

69
2017-10-21 13:00



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)

REF:  http://api.jquery.com/jQuery.now/


50
2018-03-15 14:19



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;
}

36
2017-09-21 19:12



console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch


34
2018-04-30 16:53



En plus des autres options, si vous voulez une dateformat ISO, vous pouvez l'obtenir directement

console.log(new Date().toISOString());


29
2018-01-29 15:08