2009-06-12 5 views

Répondre

2

Vous devrez utiliser Javascript - puisque vous ne connaissez pas le fuseau horaire du client côté serveur. Vous pouvez utiliser le code ci-dessous et extraire la chaîne de fuseau horaire pertinente de localtime.

var now = new Date(); 
localtime = now.toTimeString(); 

qui retournera quelque chose comme "12:21:44 GMT-0400 (HAE)"

+0

Hmm ... qui est proche. Je suis en train de « heure avancée de l'est », plutôt que l'abréviation. (en fait, je peux * * utiliser php, parce que c'est une application cela fonctionnera localement sur la machine de l'utilisateur.) – sprugman

+0

Voir http://stackoverflow.com/questions/709350/time-zones et http://stackoverflow.com/questions/633300/how-do-you-get-php- to-return-the-timezone-abbreviation-aest –

4

Javascript a une fonction Date.getTimezoneOffset qui vous donnera la différence en quelques minutes entre le GMT et le fuseau horaire local. Pour obtenir de celui du décalage réel, on pourrait dire:

var offset = Date.getTimezoneOffset/60 * -1 

Le * -1 est nécessaire parce que le décalage sera en face ce que vous attendez (par exemple, EST, qui est GMT -5, entraînerait 300, parce que GMT a 300 minutes d'avance). De là, vous devrez convertir le décalage à la description de l'offset. Il n'y a pas de manière intégrée en Javascript pour le faire. Vous pourriez envisager de créer un tableau de recherche, mais le problème serait qu'il existe plusieurs noms pour le même décalage (par exemple, GMT - 5 pourrait être EST (Eastern Standard Time) ou CDT (Central Daylight Time)

Voir Wikipedia pour une list of timezones.

+2

Le problème avec cette approche est le décalage par i Ce n'est pas suffisant. Vous devez savoir s'il y a une «heure d'été» en vigueur à cet endroit. –

Questions connexes