8
votes

Affichage de la date / heure dans le fuseau horaire de l'utilisateur - côté client

J'ai une application Web qui affiche des timbres DateTime sur chaque page, par exemple:

12 décembre 2009 18:00

Je voudrais détecter de manière dynamique le fuseau horaire de l'utilisateur et modifier l'écran à l'aide de JavaScript.

L'utilisateur de New York verrait-il:

12 décembre 2009 18:00

tandis que l'utilisateur de Californie verrait:

12 décembre 2009 15h00

Toute suggestion?


3 Réponses :


6
votes

Vous pouvez utiliser date.gettimeZoneOffset () pour obtenir Le décalage local de GMT.

var date = new Date();
var offset = date.getTimezoneOffset();


0 commentaires

2
votes

Voici comment vous pouvez le faire avec la merveilleuse "Amélioration progressive":

Éteindre la date où vous souhaitez qu'il apparaisse, mais assurez-vous de spécifier son fuseau horaire (j'utilise GMT ici, mais vous pouvez utiliser UTC, etc). Ensuite, écrasez-le avec l'heure locale sur la charge (traitée automatiquement par JavaScript si le fuseau horaire d'origine est fourni). P>

<div id="timestamp">December 12, 2009 6:00 pm GMT</div>
<script type="text/javascript">
    var timestamp = document.getElementById('timestamp'),
        t         = new Date(timestamp.innerHTML),
        hours     = t.getHours(), 
        min       = t.getMinutes() + '', 
        pm        = false,
        months    = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

    if(hours > 11){
       hours = hours - 12;
       pm = true;
    }

    if(hours == 0) hours = 12;
    if(min.length == 1) min = '0' + min;

    timestamp.innerHTML = months[t.getMonth()] + ' ' + t.getDate() + ', ' + t.getFullYear() + ' ' + hours + ':' + min + ' ' + (pm ? 'pm' : 'am');
</script>


0 commentaires

0
votes

Nous utilisons LIBRIBasse ExtJS , qui a des fonctionnalités concernant la date et l'heure qui peuvent vous aider beaucoup. En fait, sur mon Mozilla Firefox, il affiche toutes les dates et toutes les heures en fonction du fuseau horaire des navigateurs.


0 commentaires