2010-05-21 25 views
15

Comment obtenir Locale en utilisant Php, je veux obtenir le fuseau horaire en fonction de l'emplacement, est-il possible d'entrer dans PHP.Comment obtenir locale avec Php

Je dois le convertir en GMT et enregistrer la base de données. De plus, j'ai besoin de le ramener à l'interface utilisateur avec le même fuseau horaire.

+1

Les paramètres régionaux de la machine PHP s'exécute ou les paramètres régionaux de l'utilisateur faisant la requête HTTP qui est en cours de traitement par PHP? – Quentin

+3

'locale'! =' Location' Je crois que vous voulez dire 'location',' locale' est un paramètre pour le pays et la langue d'un système – jigfox

Répondre

1

Vous ne pouvez pas obtenir les paramètres régionaux ou fuseau horaire du client à partir du côté serveur, et vous ne pouvez faire le deviner du client côté, en utilisant JavaScript.

(Vous pouvez obtenir des informations plus locale si le navigateur prend en charge Java, mais est un peu une douleur et tout le monde déteste les applets.)

Pour gérer les fuseaux horaires dans une application web, stocker tous vos temps en tant que timestamp UTC, et convertissez-les en texte pour le formatage sur la page en utilisant un fuseau horaire choisi par l'utilisateur. Vous pouvez utiliser les méthodes like in this question pour deviner le fuseau horaire, mais comme ce n'est pas fiable, vous devez également autoriser l'utilisateur à choisir explicitement le fuseau horaire.

+0

nous travaillons sur le site php qui permettent à l'utilisateur de configurer l'heure schdule du message (SMS). Nous devons donc permettre à l'utilisateur final de régler l'heure dans différentes zones. – Ramakrishnan

+0

Oui ... l'utilisateur devra spécifier le 'timezone_identifier' qu'il utilise manuellement, pour passer à' date_default_timezone_set' comme décrit par Sarfraz. Voir http://www.php.net/manual/en/timezones.php pour la liste des identifiants; vous pouvez les mettre dans une liste déroulante ou une autre interface. Vous pouvez utiliser JavaScript pour choisir un fuseau horaire correspondant à la valeur par défaut de la liste déroulante, comme dans la question que j'ai liée, ou simplement utiliser l'UTC par défaut. Une fois que l'utilisateur a saisi une heure et un fuseau horaire, vous devez le convertir en UTC pour le stockage de la base de données. – bobince

+0

+1 pour stocker les horodatages UTC. Vous pourriez également vouloir vérifier la source phpBB (ou une application PHP similaire), ils ont l'utilisateur de sélectionner leur fuseau horaire lors de l'inscription, je pense que c'est exactement ce que vous cherchez. – wimvds

1

Vous pouvez utiliser:

date_default_timezone_set('Europe/London'); 
date_default_timezone_get; // Europe/London 

ou

if (ini_get('date.timezone')) { 
    echo 'date.timezone: ' . ini_get('date.timezone'); 
} 
+0

Est-ce que ces doubles guillemets simples sont là pour une raison, ou est-ce une faute de frappe? – Svish

+0

puis-je l'utiliser pour obtenir la locale date_default_timezone_get() – Ramakrishnan

+0

@Svish: C'était une faute de frappe, à juste titre repéré. Merci – Sarfraz

53

En utilisant

setlocale (LC_ALL,"0"); 

pour obtenir dans le résultat des paramètres régionaux réelle.

+0

Merci beaucoup! Il était en effet dans la documentation PHP, mais en quelque sorte tellement en face de mon nez que je l'avais manqué :) –

+0

Cela devrait être la réponse à la question ci-dessus. Merci beaucoup!! –

+0

Court, simple, au point! :) –

Questions connexes