web-dev-qa-db-fra.com

Convertissez l'heure et la date d'un fuseau horaire à un autre en PHP

Fondamentalement, ce dont j'ai besoin, c'est d'un script qui, lorsqu'il est fourni avec une heure et un fuseau horaire, peut renvoyer l'heure dans un autre fuseau horaire. 

Mes problèmes principaux sont:

  • Où trouver le décalage horaire à partir de l'heure GMT - existe-t-il une base de données publique disponible à cet effet?
  • Comment également prendre en compte les différences d'heure d'été.
  • Comment envelopper tout cela dans une classe PHP - ou existe-t-il déjà une telle classe?
39
titel
<?php
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

$date->setTimezone(new DateTimeZone('Pacific/Chatham'));
echo $date->format('Y-m-d H:i:sP') . "\n";
?>

Les exemples ci-dessus vont générer:

2000-01-01 00:00:00+12:00
2000-01-01 01:45:00+13:45

trouvé sur DateTime Manual sur php.net

EDIT: Comme Pekka l’a dit: La classe DateTime existe à partir de la version 5.2 et vous devez d’abord déterminer laquelle des méthodes est réellement implémentée et laquelle n’existe que depuis la version 5.3.

80
ITroubs

essayez ceci, ça pourrait aider :)

function converToTz($time="",$toTz='',$fromTz='')
    {   
        // timezone by php friendly values
        $date = new DateTime($time, new DateTimeZone($fromTz));
        $date->setTimezone(new DateTimeZone($toTz));
        $time= $date->format('Y-m-d H:i:s');
        return $time;
    }
4
Shubham Mathur

Je sais qu'il est tard. Pour tous ceux qui voudraient une fonction simple pour convertir utc en n’importe quel fuseau horaire local 

function UTCTimeToLocalTime($time, $tz = '', $FromDateFormat = 'Y-m-d H:i:s', $ToDateFormat = 'Y-m-d H:i:s')
{
if ($tz == '')
    $tz = date_default_timezone_get();

$utc_datetime = DateTime::createFromFormat($FromDateFormat, $time, new
    DateTimeZone('UTC'));
$local_datetime = $utc_datetime;

$local_datetime->setTimeZone(new DateTimeZone($tz));
return $local_datetime->format($ToDateFormat);
}

 echo UTCTimeToLocalTime('2015-07-01 13:30:00','America/Denver');
0
srp