2011-12-27 4 views
6

J'utilise l'appel de fonction date("D, m/d/Y h:i:s A T") pour obtenir l'heure de la date actuelle mais l'heure retournée est différente de celle que je reçois lorsque je commande la date dans linux bash (l'heure locale est CST et la fonction php date renvoie l'heure dans UTC). J'ai essayé d'employer $timezone = @system("date +%Z",$retval); pour obtenir le fuseau horaire dans une tentative de placer le fuseau horaire local en utilisant la fonction date_default_timezone_set(). Mais CST semble pas un timezone_identifier valide.Comment obtenir un fuseau horaire local en PHP?

En bref, j'ai juste besoin d'obtenir la même date et l'heure que le datetime local.

+1

Encore une fois, s'il vous plaît arrêter de signer vos messages. –

+0

Ok. Je ne savais pas que c'était interdit. – Steve

Répondre

10

Utilisez un fuseau horaire de http://php.net/manual/en/timezones.php

Ainsi, pour une utilisation CST:

<?php 
date_default_timezone_set("America/Chicago"); 

Si vous avez seulement l'abréviation de fuseau horaire et non l'identifiant de fuseau horaire puis utilisez:

<?php 
date_default_timezone_set(timezone_name_from_abbr("CST")); 
+0

+1 pour être le premier. Notez que l'utilisateur peut ne pas être * Chicago *. Bien que CT, il est préférable d'utiliser votre locale spécifique. –

+0

le problème est que j'ai besoin de le faire par programmation, donc je ne peux pas aller et copier exactement le timezone_identifier valide chaque fois que j'en ai besoin. La seule valeur que j'ai est CST ou UTC et ainsi de suite ... – Steve

+0

@StephaneKouakou J'ai ajouté un exemple de code lorsque vous avez seulement l'abréviation de timezone –

1

Bien que la système et PHP devrait être sur le même fuseau horaire, lisez les docs pour date_default_timezone_set() pour régler le fuseau horaire nuellement.

Notez que CST est et non un paramètre de fuseau horaire valide. Trouvez un valid timezone pour votre position.

0

Je pense avoir trouvé une meilleure fonction: timezone_name_from_abbr()

+0

Si la réponse est correcte, veuillez la marquer comme correcte. – rvighne

Questions connexes