Я использую DateTime и диф вычислить разницу в днях между двумя датами следующим образом:Datetime дифф возвращаются странный результат
$data_inceput = '2013-10-01';
$data_sfarsit = '2013-10-31';
$date1 = new DateTime($data_inceput);
$date2 = new DateTime($data_sfarsit);
$nr_zile = $date2->diff($date1)->format("%a");
$nr_zile
выходит как 6015 по некоторым причинам.
Если я `var_dump($date2->diff($date1));
я получаю:
object(DateInterval)#6 (8) {
["y"] => int(0)
["m"] => int(0)
["d"] => int(30)
["h"] => int(0)
["i"] => int(0)
["s"] => int(0)
["invert"] => int(1)
["days"] => int(6015)
Любая идея, почему это ведет этот путь? Я также попытался установить часовой пояс для UTC для каждой даты отдельно и получить тот же результат.
Редактирование: Я тестировал на производственном сервере, и он отлично работает, единственная проблема возникает на локальном сервере Apache, но настройки php в основном идентичны между ними.
Какую версию PHP вы используете? Я тестировал этот код на PHP 5.3.13 и не имел проблемы ($ nr_zile выходит как 30) –
Проверка Lemme. Он также работает хорошо для меня на удаленном сервере, но дает мне приведенный выше результат на моем локальном сервере apache ... даже в php-настройках в основном одинаковые – Bogdan
Установили ли часовой пояс UTC перед созданием экземпляров DateTime, используя 'date_default_timezone_set '? Если нет, пожалуйста, сделайте ... все равно: результат 'diff' довольно странный, но не могли бы вы сказать, в какой временной зоне вы находитесь, используя' date_default_timezone_get'? –