11
votes

Comment convertir les formats de date PHP en GMT et vice versa?

Je suis nouveau à PHP. Je veux écrire une fonction où j'ai besoin d'un utilisateur de saisir la date de saisie dans n'importe quel format de date, y compris DST, dans le format GMT, puis plus tard dans le format entré d'origine.Veuillez tout corps Aide-moi.


1 commentaires

Lire le manuel PHP pour date et exemple donné là-bas


3 Réponses :


4
votes

Utilisez le fonction Gmdate pour convertir en temps GMT.

pour Exemple P>

$d = '2011-03-28 12:05:20'; 
$gmt = gmdate('Y-m-d H:i:s',strtotime($d));


1 commentaires

Quand je donne la date comme "2013-07-03 16:00 ist", je me trompe de la date



30
votes

Bien que les fonctions GMDate soient disponibles. Si vous utilisez PHP 5.2 ou plus, envisagez d'utiliser l'utilisation de DateTime objet. Voici le code pour passer à GMT P>

date_default_timezone_set('Asia/Kolkata');
$date = new DateTime('2011-03-28 13:00:00');
$date->setTimezone(new DateTimeZone('America/New_York'));
echo $date->format("Y-m-d H:i:s");
//Outputs: 2011-03-28 03:30:00


12 commentaires

merci jcob ...... mais s'il vous plaît pouvez-vous poster un exemple comment cela fonctionne exactement ............


Merci beaucoup JCOB ...... Mais je suis confus ici ........ Comment votre exemple m'aidera-t-il dans ma question ...... ??


@ 0001 Dans mes 2 premiers extraits de code. La première crée une instance DateTime pour l'heure actuelle à l'aide de la fusible par défaut (définie dans php.ini ou date_default_timezone_set ()) et le convertit en GMT. Ensuite, vous pouvez l'écho en utilisant $ date-> format () . La deuxième extraite crée une instance DateTime dans GMT et la convertit au fuseau horaire par défaut.


Hey Jcob ......... j'ai essayé ton code ...... Je reçois "2011-12-24 13: 00: 00'as une convertion GMT de '2011-12-25 00:00 : 00 'Et pour l'original DateFormat, j'ai utilisé date_default_timezone_set (' Australia / Melbourne '); Je reçois le 2011-01-01 11:00:00 en tant que données originales.Bousting confus ici.


@ 0001 Utilisation de l'extrait de code Dernier code, il convertit sur GMT Sorties 2011-12-24 13:00:00, puis convertit à Melbourne ... Sorties 2011-12-25 00:00:00.


On dirait que vous utilisez mon premier exemple ... Vous ne devez pas créer deux fois de date différentes ... Les 2 premiers extraits de code sont un exemple unique, pas une fonction qui ne convertira rien.


Une autre question JCOB ..... S'il vous plaît ne vous inquiétez pas ... Ici, si DST est utilisé dans votre code? BCOZ Toujours concept DST Je ne me suis pas clair pour moi.


@ 0001 DateTime gérera DST pour vous.


Hey, je suis confronté à un problème ici ..... J'essaie de vérifier votre code avec le fuseau horaire américain / Newyork , J'ai donné la date et l'heure d'aujourd'hui comme entrée ... 2011-03-28 13:00 : 00 ... Comme DST commence à nous maintenant ... Je devrais obtenir 2011-03-28 03:30:00 comme la sortie droite ?? mais je reçois 2011-03-28 17:00:00 .. ..dont sait où est le problème


@ 0001 Quelle est votre fuseau horaire par défaut? Où est votre serveur?


@ 0001 Essayez avec votre logique aussi, ne pas dépendre de si


UR Code fonctionne bien Jacob ...... Mais ici dans votre code ne le convertissez pas en format GMT.Directement, il montrera que l'America / Newyork Time Zone. Je souhaite que leur convertission GMT ainsi que le fuseau horaire américain / Newyork



0
votes

// convertissez l'heure locale sur GMT

    public function convertTime($timezone,$time){
        $selectedtime = date("Y-m-d H:i",strtotime($time));
        $date = new DateTime($selectedtime, new DateTimeZone($timezone));
        $date->setTimezone(new DateTimeZone('GMT'));
        $convertedtime = strtotime($date->format('Y-m-d H:i'));
        return $convertedtime;
    }


0 commentaires