Autor Zpráva
uestla
Profil
Dobré předráno.

Pokouším se vyřešit následující problém:
Přes last.fm API si z jejich serveru tahám XML, které následně parsuji, což není podstatné. Podstata problému je v tom, že časy od nich dostávám v pásmu UTC, tj.

$time = '25 Dec 2010, 02:45';


přičemž ve své aplikaci mám v PHP nastavenu střední Evropu (tj. o 1 hodinu víc):

date_default_timezone_set("Europe/Prague");


Je nějaký rozumný způsob, jak tento rozdíl srovnat, abych zároveň nemusel nikde psát natvrdo hodinu (tj. aby se to chovalo pružně při pozdější změně zóny v PHP)?

Zatím to řeším nehezky takto:

strtotime($time) + 3600;


Děkuji předem za případné reakce.
Majkl578
Profil
Myslím, že nejjednodušší to bude asi pomocí DateTime:
$time = '25 Dec 2010, 02:45';
$dt = new \DateTime($time, new \DateTimeZone('UTC')); // místo výchozí zóny se použije UTC
$dt->setTimezone(new \DateTimeZone('Europe/Prague')); // změna z UTC na naši zónu

var_dump($dt->format('d.m.Y H:i:s')); // test
uestla
Profil
Pomohlo, děkuji!

Ještě pro mírný refactoring jsem použil

$dt->setTimeZone(new DateTimeZone(date_default_timezone_get()))


Při pozdějších změně časové zóny PHP nebudu muset projíždět kód aplikace :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0