php DateTime объект с unix timestamp неправильный - ошибка? - PullRequest
1 голос
/ 07 октября 2011

Только что наткнулся на эту странную ошибку с php-объектом DateTime ... Проверьте это:

<?php
$date = 1335823200;
echo date('d',$date);
echo '<br />';
$date = new DateTime("@$date");
echo $date->format('d');
?>

Возвращает:

06
05

Это не происходит с любой отметкой времени.Я подозреваю, что это как-то связано с разными часовыми поясами, но игра с setlocale () ничего не помогла.Кстати, '@' в DateTime необходим, чтобы иметь возможность использовать метки времени Unix (см. Отчет об ошибке здесь ).Вот еще несколько временных отметок для тестирования:

1333663200
1338588000
1338847200

1 Ответ

2 голосов
/ 07 октября 2011

Поскольку вы не указали часовой пояс для DateTime, предполагается, что это UTC, тогда как date учитывает текущий часовой пояс (заданный date_default_timezone_set или взятый из php.ini). Просто выполните это и увидите:

$date = 1335823200;
echo date('d-m-Y  H:i:s',$date);
echo '<br />';
$date = new DateTime("@$date");
echo $date->format('d-m-Y H:i:s');
...