1
votes

Précision de Date.now () dans les navigateurs

J'ai vu beaucoup de questions sur la façon d'obtenir la date et l'heure en JavaScript, et les réponses ressemblent toujours à quelque chose comme

Date.now () renvoie l'horodatage UTC en millisecondes

Mais dans quelle mesure cette valeur est-elle vraiment fiable? Est-ce simplement basé sur l'horloge système de n'importe quel ordinateur exécutant le navigateur? Si tel est le cas, il semble que cela puisse varier arbitrairement loin de l'heure UTC réelle, mais à quelle variation faut-il s'attendre?. Je sais que le souci de la précision des millisecondes est une cause perdue, mais qu'en est-il de l'ordre de quelques secondes ou minutes?


1 commentaires

À moins que vous n'appeliez à une horloge externe, tous les paris sont ouverts. Même alors, c'est fragmentaire.


3 Réponses :


2
votes

Est-il simplement basé sur l'horloge système de n'importe quel ordinateur exécutant le navigateur?

C'est vrai. Cela pourrait bien être complètement inexact. Par exemple, sur mon ordinateur, dont l'horloge est inexacte, à ce moment, Date.now () renvoie 1563724931361 , qui, lorsqu'il est passé dans new Date , donne:

Dim 21 juillet 2019 11:02:11 GMT-0500 (heure avancée du Centre)

Ce qui est complètement faux.

Si le client souhaite présenter un Date.now () inexact, il est assez trivial pour lui de le faire, bien que généralement , pour la plupart des utilisateurs ordinaires, cela ' sera précis, car la plupart des gens ont des horloges précises.

Quelle est la précision? Cela dépend du matériel, du temps écoulé depuis que leur ordinateur a demandé l'heure pour la dernière fois à un serveur de temps et du temps écoulé depuis la mise sous tension de l'ordinateur (à partir de la mise hors tension ou en veille / hibernation), mais la plupart du temps, cela a gagné ne sois pas éloigné de plus d’une minute.


0 commentaires

1
votes

Il y a toujours ECMA-262 : < / p>

20.3.3.1 Date.now ()

La fonction maintenant renvoie une valeur numérique qui est valeur de temps désignant la date et l'heure UTC de l'occurrence de l'appel à maintenant .

Voilà, il n'y a aucune exigence quant à l'origine de la valeur ou à sa précision, donc cela dépend de l'implémentation. En pratique, il semble que la plupart des implémentations utilisent les valeurs du système hôte, donc la fiabilité n'est pas meilleure que ce que l'on pourrait attendre d'une horloge système et des paramètres fournis par l'utilisateur tels que le calendrier, le fuseau horaire, l'heure d'été, l'heure actuelle, etc.


0 commentaires

0
votes

À la lumière des attaques de mémoire par canal latéral la précision des sources de synchronisation dans un navigateur était limitée. Selon les informations actuelles, à partir du Outil de suivi des problèmes W3C High Resolution Time , la limitation est un peu différente entre les différents navigateurs:

  • Mobile Chrome + Edge: 100us + 100us de gigue
  • Chrome de bureau: 5us
  • Safari + Firefox: 1 ms

0 commentaires