J'ai un compte à rebours JavaScript qui fonctionne en prenant une date et une heure spécifiées, et en comparant la date et l'heure actuelles. Le problème est que l'heure actuelle est relative au fuseau horaire des utilisateurs. Le temps restant est différent entre les utilisateurs. P>
Comment puis-je avoir le compte à rebours de la minuterie jusqu'à une heure dans un fuseau horaire spécifique, dans mon cas GMT -5 heures? P>
Je comprends que je puisse utiliser le code ci-dessous pour obtenir le fuseau horaire des utilisateurs, mais je suis perdu comme comment utiliser ceci. P>
mydateObj.gettimeZoneOffset () / 60 p> blockQuote>
6 Réponses :
Une recherche rapide révèle: Convertir-the-local-Time-Time-Time-Zone-with-this-JavaScript
Après l'article Verbatim vous obtient cet exemple: P>
var d = new Date();
var localTime = d.getTime();
var localOffset = d.getTimezoneOffset() * 60000;
var utc = localTime + localOffset;
// obtain and add destination's UTC time offset
// for example, Bombay
// which is UTC + 5.5 hours
var offset = 5.5;
var bombay = utc + (3600000*offset);
var nd = new Date(bombay);
alert("Bombay time is " + nd.toLocaleString() + "<br>");
Vous ne dites pas vraiment exactement ce que vous essayez d'accomplir. L'objet de date JavaScript récupère l'heure locale et le «décalage de fuseau horaire» (par rapport à GMT (UTC)). Celles-ci sont bien sûr "définies" par l'utilisateur afin même si dans le même fuseau horaire, deux utilisateurs ont peu de chances d'avoir le même "temps". P>
Si vous essayez de faire du temps entre différents utilisateurs, vous devez référencer certaines autorités de temps centralisées. p>
J'utiliserais un appel de type AJAX (XMLHTTPRequest) sur une page Possédez mon propre serveur qui renvoie l'heure de mon serveur. De cette façon, chaque utilisateur fait référence au même moment. p>
Google XMLHTTPQuRequest Pour trouver des exemples du code JS dont vous avez besoin (et souvent le code côté serveur correspondant pour un service simple tel que ceci). P>
PS: J'installerais également un logiciel client simple pour garder le temps sur mon serveur précis en la synchronisation avec une horloge atomique toutes les 10 minutes. p>
Vous pouvez utiliser Il fonctionne comme le constructeur de date, mais renvoie l'horodatage des arguments à Temps de greenwich (offset = 0) au lieu de l'heure locale. P> date.utc (année, mois, jour, heures, minutes, secondes, msec) code> var localtime=new Date(Date.UTC(year,month,day,hours,minutes,seconds,msec))
C'est la meilleure réponse
Super simple et fonctionne parfaitement, merci!
Vous ne pouvez pas obtenir une date précise avec JavaScript car il est client et il est basé sur l'horloge du système d'exploitation de l'utilisateur. Vous pouvez utiliser JCounter pour afficher les comptes à rebours basés sur des fuseaux horaires côté serveur. P>
Mais hé, si vous voulez vraiment le faire vous-même, téléchargez JCounter et vous trouverez un fichier daTeandeTime.php également, ce qui récupère le côté du serveur de date actuel, comme l'horodatage (il devra être placé sur un serveur BTW, pas sur votre bureau: p) p>
Vérifiez comment ce script utilise ce fichier et récupère la date actuelle réelle pour fonctionner contre elle et calculer des comptes à rebours précis. P>
acclamations p>
Il suffit de créer un rendez-vous avec un RFC 2822 horodatage avec le fuseau horaire. Ce temps sera alors converti à l'emplacement actuel des utilisateurs (en fonction des paramètres du système d'exploitation). Même avec des corrections pour Heure d'été !
Je suis en Norvège, qui est actuellement en temps de l'heure d'été, alors GMT + 2 est tout. Voici ce qui se passe lorsque je crée un objet Date à l'aide GMT-0500: p>
new Date().toString();
"Remarque: analyse des chaînes de date avec le constructeur de date (et date.parse, ils sont équivalents) sont fortement découragés en raison des différences de navigateur et des incohérences." - développeur.mozilla.org/en-us/docs / Web / javascript / référence / ...
C'est la bonne solution pour mon dilemme, je l'aime merci!
Pour réviser l'approche Brandon a pris pour calculer une heure à décalage UTC, nous pouvons réduire le code dans une extension de deux lignes de l'objet de date: Vous pouvez ensuite calculer La date de décalage UTC-5 comme suit: P> myDate = new Date().getOffsetDate(-5);
compteditailjs.org