Обнаружил интересную штуку:
> date
Втр Июл 1 23:11:55 MSK 2014
> php -r "$d = DateTime::createFromFormat('Y.m.d H:i:s T', '2014.07.01 23:11:55 MSK'); echo $d->format(DateTime::W3C) . PHP_EOL;"
2014-07-01T23:11:55+03:00
> php -r "$d = new DateTime('now', new DateTimeZone('MSK')); echo $d->format(DateTime::W3C) . PHP_EOL;"
2014-07-01T23:12:57+04:00
Интересно тут вот что: 2014-07-01T23:11:55+03:00 2014-07-01T23:12:57+04:00
Т.е. при получении текущего времени в зоне MSK, смещение времени определяется верно (+04:00), а при создании времени из зоны MSK, смещение определяется не верно (+03:00).
Или я что-то неправильно понимаю?
P.S. Debian Wheezy с обновленным tzdata из wheezy/updates.
На Jessie получается вообще вот так:
> php -r "\$d = new DateTime('now', new DateTimeZone('MSK')); echo \$d->format(DateTime::W3C) . PHP_EOL;"
2014-07-01T22:20:55+03:00