Si javascript "(new Date()).getTime () " est exécuté à partir de 2 fuseaux horaires différents
si JavaScript (new Date()).getTime()
est exécuté simultanément à partir de 2 fuseaux horaires différents, obtiendrez-vous la même valeur?
cette valeur sera-t-elle affectée par le temps système sur la machine où le navigateur est en cours d'exécution?
5 réponses
oui, il est affecté par le temps du système. Cependant, si l'heure locale est correcte (pour n'importe quel fuseau horaire sur lequel l'ordinateur est réglé), elle devrait être la même dans n'importe quel fuseau horaire.
le standard ECMAScript dit ( §15.9.1.1 ):
"le Temps est mesuré en ECMAScript dans millisecondes depuis le 1er janvier 1970 L'UTC."
Code:
var today = new Date();
console.log(today);
var t = today.getTime();
console.log(t);
mon ordinateur AU ROYAUME-UNI:
Sat Sep 21 2013 03:45:20 GMT+0100 (GMT Daylight Time)
1379731520112
My VPS:
Sat, 21 Sep 2013 02:44:31 GMT
1379731471743
différence entre les valeurs getTime est de 48,369 millisecondes (48s) hors de synchronisation pas la différence de zone d'une heure
vous n'obtiendrez pas la même valeur - différence entre les navigateurs de deux clients récupérant leur temps système, mais si leur temps est configuré correctement, vous devriez obtenir deux fois avec une différence minimale depuis l'obtention de l'horodatage en utilisant new Date()
, vous pouvez obtenir la valeur UTC ( new Date()
renvoie le nombre de millisecondes découpées depuis le 1er janvier 1970, et cela ne changera pas), qui est temps universel et est agnostique de localisation.
vous pourriez vouloir faire cela si vous voulez la même date que votre serveur à travers différents fuseaux horaires:
var UTC=new Date(Date.UTC(serverYear,serverMonth-1,serverDate,0,0,0,0));
il y aura très probablement toujours un écart entre les temps atteints entre les machines, mais JavaScript Date () prend par défaut le fuseau horaire UTC.
habituellement, lorsque le temps est essentiel, il est préférable d'utiliser simplement le temps du serveur et d'appliquer des corrections de fuseau horaire à celui de la sortie si nécessaire.