Всё хорошо работает с UTC, хорошо работает с Europe/Moscow (UTC+3), но при использовании часовых поясов UTC+1, UTC+2 результат получается ошибочным.
Тестовый код:
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- $timestamp = 1432929600;
- (new DateTime(null, new DateTimeZone("UTC"))) // UTC
- ->setTimestamp($timestamp)->format("H, i, s"),
- (new DateTime(null, new DateTimeZone("Europe/Paris"))) // UTC + 1
- ->setTimestamp($timestamp)->format("H, i, s"),
- (new DateTime('@' . $timestamp))
- ->setTimezone(new DateTimeZone("Europe/Paris"))->format("H, i, s"), // UTC + 1
- (new DateTime(null, new DateTimeZone("Europe/Helsinki"))) // UTC + 2
- ->setTimestamp($timestamp)->format("H, i, s"),
- (new DateTime(null, new DateTimeZone("Europe/Istanbul"))) // UTC + 2
- ->setTimestamp($timestamp)->format("H, i, s"),
- (new DateTime(null, new DateTimeZone("Europe/Moscow"))) // UTC + 3
- ->setTimestamp($timestamp)->format("H, i, s"),
- (new DateTime(null, new DateTimeZone("Africa/Nairobi"))) // UTC + 3
- ->setTimestamp($timestamp)->format("H, i, s")
- );