web-dev-qa-db-fra.com

Comment utiliser une heure personnalisée dans un navigateur pour tester la différence de temps entre le client et le serveur

Je viens d'écrire un petit morceau de code pour afficher l'heure du serveur dans une page Web. Pour le moment, je n'ai qu'une machine et je ne peux donc pas vérifier si le code fonctionne. 

Existe-t-il un moyen d'indiquer au navigateur d'utiliser une configuration temporelle différente de celle configurée dans le système d'exploitation? J'ai utilisé des plugins pour Firefox pour tester différents paramètres régionaux. Je me demande s'il existe des options similaires pour les tests de temps.

Merci.

38
Marcelo

Malheureusement, JavaScript ne connaît que le fuseau horaire actuel, tel que défini par le système d'exploitation. Il n'y a pas d'installation permettant à l'objet Date d'utiliser un fuseau horaire différent dans un contexte particulier. Il y a certaines bibliothèques pour effectuer des conversions de fuseaux horaires, mais cela ne vous aidera pas.

Sur Linux, Mac OSX et d'autres systèmes * NIX, vous pouvez définir la variable d'environnement TZ. Voir Réponse de Benedikt Köppel pour plus de détails.

Cependant, il n’existe aucune installation pour cela sous Windows. Certains programmes Windows peuvent utiliser la variable d'environnement TZ, mais ceux qui le font ne l'interprètent pas nécessairement correctement, car ils ne sont pas configurés pour prendre en charge les noms de fuseau horaire IANA. Plus sur ceci ici et ici .

13
Matt Johnson

Créez un nouveau répertoire vide pour un profil utilisateur Chrome distinct. Par exemple. avec

mkdir ~/chrome-profile

Vous spécifiez la variable d'environnement TZ. Vous pouvez voir les fuseaux horaires valides, par exemple ici , dans la colonne TZ.

Pour démarrer Chrome, utilisez ces commandes:

  • pour Mac OS X: TZ='US/Pacific' open -na "Google Chrome" --args "--user-data-dir=$HOME/chrome-profile"
  • pour Linux: TZ='US/Pacific' google-chrome "--user-data-dir=$HOME/chrome-profile"
87
Benedikt Köppel

À la demande générale (blague!), L'explication.

Google Chrome lit les variables d'environnement pour obtenir le fuseau horaire correspondant. Apparemment, toutes les instances de Chrome partagent la valeur (non testée). Pour forcer un fuseau horaire, nous devons a) définir la variable d'environnement sur le fuseau horaire souhaité, b) supprimer toutes les instances existantes de Chrome , c) imprimer le fuseau horaire actuel pour confirmer, et d) Démarrer Chrome le fuseau horaire prévu.

Le script Shell ci-dessous est testé avec OS X mais devrait également fonctionner pour d'autres.

export TZ='US/Pacific'

killall Chrome
date
open /Applications/Google\ Chrome.app
8
kontinuity

Chrome semble mettre à jour son fuseau horaire dès que vous le modifiez dans Windows. Firefox semble stocker la valeur du fuseau horaire du système au démarrage.

Avec Visual Studio, il semble que vous puissiez renverser la situation. Il semble que le fuseau horaire ne soit lu que lorsque vous démarrez le processus de débogage pour la première fois. Donc, dans mon cas, ce que j'ai fait a été de régler le fuseau horaire sur, par exemple, l'heure normale de l'Est. Démarrez le débogueur Visual Studio. J'ai ensuite changé le fuseau horaire pour, par exemple, l'heure standard du Pacifique. Le serveur à ce stade est resté dans le fuseau horaire oriental, alors que mon navigateur était dans le fuseau horaire Pacifique. Maintenant, j'ai pu tester le comportement du navigateur client.

Si vous souhaitez tester un client au Japon, mettez simplement votre TimeZone à jour et le navigateur le suivra. Tant que vous ne redémarrez pas le processus de débogage le fuseau horaire de votre serveur ne changera pas. Aussi simplement changer l'heure (par opposition au fuseau horaire) n'a pas fonctionné.

2

Vieille question, mais j'avais un problème similaire et je vais quand même ajouter mon correctif.

Ce que j'ai fait, c'est exécuter mon serveur sur une machine virtuelle et définir les paramètres réseau sur pontés afin de pouvoir accéder facilement au serveur à partir de mon système d'exploitation hôte en tant que client.

J'ai ensuite modifié les paramètres de l'heure dans VM afin qu'il y ait la différence que je voulais entre le client et le serveur.

1
Matt Buckborough

Vous ferez probablement mieux de laisser le fuseau horaire de votre ordinateur intact et de modifier les paramètres de votre serveur afin de refléter un fuseau horaire qui précède ou qui se cache derrière vous. Cela est généralement assez facile à faire en fonction du serveur que vous utilisez.

0
Amalgovinus

C’est un moyen facile d’essayer de changer de fuseau horaire et de le tester sous Windows 7 ^ J'utilise tzutil

tzutil /s "Eastern Standard Time" et enregistrez-le dans le fichier .bat approprié, par exemple Eastern_Standard_Time_zone.bat, et utilisez default_time_zone.bat pour conserver le fuseau horaire de votre système d'origine afin de le récupérer après avoir terminé. cela va changer votre fuseau horaire en clignotant . référence

0
Salem