PHP 5.2.17 разница в дате и времени

#php #datetime

#php #дата и время

Вопрос:

Во-первых, прежде чем кто-либо напишет это, я знаю, что об этом уже есть много тем, и я проверил многие из них, но почему-то у меня ничего не работает.

У меня в mysql 2 поля даты и времени (date_in, date_out) Мне просто нужно вычесть дату из date_out, что легко в php 5.3, но я нахожусь на чьем-то сервере и не могу его обновить … дата в обоих полях форматируется следующим образом (2014-06-02 16:43:47)

Приведенный ниже пример работает нормально, как есть (я нашел его где-то в стеке)

 $start = new DateTime('2010-10-12');
$end = new DateTime();
$days = round(($end->format('U') - $start->format('U')) / (60*60*24));
 

НО когда я меняю $start и $end на свои данные из базы данных, последняя строка $days выдает ошибку (the -> format(‘U’)) кажется проблемой. Как это можно исправить?

(разница между концом / началом никогда не будет превышать максимум час)

Комментарии:

1. Попробуйте использовать Carbon для таких вещей: github.com/briannesbitt/Carbon#api-difference

2. @JohnConde кашель 5.2.17 кашель

3. @DaveRandom Я не думаю, что в этом коде было что-то, чего не было в 5.2. Я подозреваю, что проблема в их значениях DB.

4. У меня все еще работает . Ваша проблема заключается в другом.

5. @Fred-ii — Чудо современной медицины! 🙂

Ответ №1:

Я наконец-то понял это!

 $date_inA = $sql_array[3];
$date_inB = new DateTime($date_inA);
$date_outA = $sql_array[4];
$date_outB = new DateTime($date_outA);

$diff = round(($date_outB->format('U') - $date_inB->format('U')) / (60*60*24));
 

Мне нужно было изменить значение объекта string на объект datetime, я думал, что это уже объект date time в БД…

Комментарии:

1. Отлично. 1 рад это слышать. Приветствия