87 votes

Obtenir l'heure d'un fuseau horaire spécifique

J'utilise une Date et j'essaie d'obtenir la date actuelle à l'aide de la méthode getDate() . Mais évidemment, il charge la date et l'heure du système. J'exécute le code depuis l'Inde, mais je souhaite obtenir la date et l'heure du Royaume-Uni en utilisant la même méthode. Comment puis je faire ça ?

85voto

Sudhir Points 50854

Si vous connaissez le décalage UTC, vous pouvez le transmettre et obtenir l'heure à l'aide de la fonction suivante :

 function calcTime(city, offset) {
    // create Date object for current location
    var d = new Date();

    // convert to msec
    // subtract local time zone offset
    // get UTC time in msec
    var utc = d.getTime() + (d.getTimezoneOffset() * 60000);

    // create new Date object for different city
    // using supplied offset
    var nd = new Date(utc + (3600000*offset));

    // return time as a string
    return "The local time for city"+ city +" is "+ nd.toLocaleString();
}

alert(calcTime('Bombay', '+5.5'));

Extrait de :  Convertir l'heure locale en une autre

33voto

chris Points 441

La meilleure façon de le faire est d'utiliser getLocaleString, comme ceci :

Créez un objet date :

 date = new Date(0)

Si vous êtes à Berlin, cela devrait se convertir en cette chaîne :

Jeu 01 janv. 1970 01:00:00 GMT+0100 (CET)

Obtenez les heures à Athènes:

 date.toLocaleString('de-DE', {hour: '2-digit',   hour12: false, timeZone: 'Europe/Athens' })

'02'

Obtenez les heures à Shanghai :

 date.toLocaleString('de-DE', {hour: '2-digit',   hour12: false, timeZone: 'Asia/Shanghai' })

'08'

6voto

Joy Chowdhury Points 146

C'est la bonne façon d'obtenir ##

 function getTime(offset)
        {
            var d = new Date();
            localTime = d.getTime();
            localOffset = d.getTimezoneOffset() * 60000;

            // obtain UTC time in msec
            utc = localTime + localOffset;
            // create new Date object for different city
            // using supplied offset
            var nd = new Date(utc + (3600000*offset));
            //nd = 3600000 + nd;
            utc = new Date(utc);
            // return time as a string
            $("#local").html(nd.toLocaleString());
            $("#utc").html(utc.toLocaleString());
        }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X