$defaultTimeZone = date('e');
var_dump(time());
var_dump(date('H'));
date_default_timezone_set('Europe/Moscow');
var_dump(time());
var_dump(date('H'));
date_default_timezone_set($defaultTimeZone);
var_dump(time());
var_dump(date('H'));
Вывод:
int 1409235786
string '14' (length=2)
int 1409235786
string '18' (length=2)
int 1409235786
string '14' (length=2)
Странный вывод с учётом того, что:
string date ( string $format [, int $timestamp = time() ] )
Это баг или косяк документации?
Также вычислил, что strtotime('now') тоже отдаёт UTC, а например strtotime('tomorrow') отдаёт с поправкой.
Каким функциям можно верить?)
UPD:
strtotime('+1 second') тоже отдаёт без поправки. Что же это творится(