Auteur : BUILDER.COM
Il ne fait aucun doute que l'utilisation de scripts JavaScript permet d'afficher facilement l'heure locale sur une page Web en visualisant directement l'horloge de l'utilisateur. Mais que se passe-t-il si vous souhaitez afficher l'heure d'une autre région, par exemple si votre siège social se trouve dans un autre pays et que vous souhaitez afficher l'heure du « domicile » au lieu de l'heure locale ?
Pour ce faire, divers calculs d'heure doivent être effectués pour convertir l'heure locale en heure de destination. Cet article explique comment effectuer ces calculs.
Étape 1 :
La première étape consiste à obtenir l’heure locale. En JavaScript, cela peut certainement être fait facilement en initialisant un objet Data().
// crée un objet Date pour l'emplacement actuel
d = new Date();
En appelant la méthode getTime() de l'objet Data(), vous pouvez afficher le nombre de millisecondes entre le 1er janvier 1970 et l'heure actuelle.
// conversion en ms depuis le 1er janvier 1970
localTime = d.getTime();
Étape 2 :
Ensuite, recherchez la valeur du décalage horaire local via la méthode getTimezoneOffset() de l'objet Data(). Par défaut, cette méthode affiche le résultat de la valeur de décalage du fuseau horaire en minutes, cette valeur est donc convertie en millisecondes dans le calcul précédent.
// obtient le décalage UTC local et convertit en msec
localOffset = d.getTimezoneOffset() * 60000;
Notez que la valeur de retour négative de la méthode getTimezoneOffset() indique que l'heure locale est antérieure au Temps standard universel (UTC), tandis que le retour positif La valeur indique l'heure locale après le temps universel coordonné (UTC).
Remarque : Si vous vous demandez comment j'ai obtenu le facteur de multiplication de 60 000, rappelez-vous que 1 000 millisecondes équivaut à une seconde et qu'une minute équivaut à 60 secondes. Par conséquent, pour convertir des minutes en millisecondes, multipliez 60 par 1 000, ce qui équivaut à 60 000.
La troisième étape
consiste à ajouter l'heure locale et la valeur de décalage du fuseau horaire local pour obtenir l'heure standard internationale (UTC) actuelle.
// obtient l'heure UTC en msec
utc = localTime + localOffset;
Ici, la variable utc contient l'heure standard internationale actuelle (UTC). Cependant, ce temps est exprimé en millisecondes depuis le 1er janvier 1970 jusqu’à nos jours. Exprimons-le ainsi pour l'instant, car il reste encore quelques calculs à faire.
La quatrième étape consiste
à obtenir l'heure standard internationale (UTC), puis à obtenir la valeur de décalage horaire de l'heure standard internationale (UTC) de la ville cible, à la convertir en millisecondes et à ajouter l'heure standard internationale (UTC).
// obtient et ajoute le décalage horaire UTC de la destination
// par exemple, Bombay
// qui est UTC + 5,5 heures
de décalage = 5,5 ;
bombay = utc + (3600000*offset)
REMARQUE : au cas où vous vous demanderiez comment j'ai obtenu 3600000 pour la multiplication ; facteurs, rappelez-vous que 1 000 millisecondes équivaut à une seconde et qu’une heure équivaut à 3 600 secondes. Par conséquent, pour convertir des heures en millisecondes, multipliez 3 600 par 1 000, ce qui équivaut à 3 600 000.
À l'heure actuelle, la variable bombay contient l'heure locale de Mumbai, en Inde. Cette heure locale est exprimée en millisecondes du 1er janvier 1970 à nos jours. Évidemment, cela n’a aucun sens, nous devons donc faire quelques calculs.
La cinquième étape
consiste à initialiser un nouvel objet Data() et à appeler la méthode toLocalString() de cet objet. Nous convertissons la valeur temporelle calculée à l'étape précédente en une chaîne date/heure que tout le monde peut comprendre.
// convertit la valeur msec en chaîne de date
nd = new Date(bombay);
document.writeln("L'heurede
Bombay est " + nd.toLocaleString() + "<br>");
Aprèsavoir résumé
et compris les étapes ci-dessus, examinons à nouveau ce script (liste A), qui crée une fonction compacte et personnalisée calcTime() qui effectue tous les calculs et renvoie une valeur temporelle.
Liste A
<html>
<head>
<script language="JavaScript">
// fonction pour calculer l'heure locale
// dans une ville différente
// étant donné le décalage UTC de la ville
function calcTime(city, offset) {
// crée un objet Date pour emplacement actuel
d = new Date();
// convertir en msec
// ajouter un décalage de fuseau horaire local
// obtenir l'heure UTC en msec
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
// crée un nouvel objet Date pour une ville différente
// en utilisant le décalage fourni
nd = new Date(utc + (3600000*offset));
// renvoie l'heure sous forme de chaîne
return "L'heure locale dans " + city + " est " + nd.toLocaleString();
}
//
obtient
l'alerte horaire de Bombay (calcTime('Bombay', '+5.5'));
obtenir l'alerte horaire de Singapour
(
calcTime('Singapore', '+8'));
//
obtenir
l'
alerte horaire de Londres
(calcTime('London', '+1'));
/body>
</html>
Ici, la fonction calcTime() accepte un nom de ville et sa valeur de décalage du Temps Universel Coordonné (UTC) (en heures). Il effectue ensuite en interne tous les calculs décrits ci-dessus et renvoie une chaîne contenant l'heure locale de cette ville.
Voici quelques exemples des résultats du listing A.
L'heure locale de Mumbai est le lundi 1er août 2005, 16:43:51
. L'heure locale de Singapour est le lundi 1er août 2005, 19:13:51. L'heure locale de Londres est le lundi 1er août 2005
, 12:13:51 PM.
La prochaine fois que vous vous asseoirez pour écrire un script de fuseau horaire pour votre page Web, nous espérons que ce script vous fera gagner du temps. Apprécier! !