Ошибка date diff PHP
Я делаю тест, с помощью запроса в базы данных Oracle (запись sysdate, результат: 13/09/2016 13:24:44), и я возвращался в PHP. Мне нужно рассчитать разницу в часах и пытался функция ниже:
$date_a = new DateTime($p_fim[$passo]);
$date_b = new DateTime($p_inicio[$passo]);
$interval = date_diff($date_a,$date_b);
echo $interval->format('%h:%i:%s');
Но он возвращает ошибку ниже:
Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (13/09/2016 13:24:44) at position 0 (1): Unexpected character'
Исследование, в так же все используют формат 2016-09-13. Так ли это? Нужно преобразовать, прежде чем передать значение?
1 answers
Эти типы поддерживаются, согласно документации:
const string ATOM = "Y-m-d\TH:i:sP" ;
const string COOKIE = "l, d-M-Y H:i:s T" ;
const string ISO8601 = "Y-m-d\TH:i:sO" ;
const string RFC822 = "D, d M y H:i:s O" ;
const string RFC850 = "l, d-M-y H:i:s T" ;
const string RFC1036 = "D, d M y H:i:s O" ;
const string RFC1123 = "D, d M Y H:i:s O" ;
const string RFC2822 = "D, d M Y H:i:s O" ;
const string RFC3339 = "Y-m-d\TH:i:sP" ;
const string RSS = "D, d M Y H:i:s O" ;
const string W3C = "Y-m-d\TH:i:sP" ;
Http://php.net/manual/en/class.datetime.php
Вашем случае не имеет стандартизованный формат официально, следовательно, необходимо обеспечить допустимый формат.
Вот пример того, как использовать метод DateTime::createFromFormat()
$date_a = DateTime::createFromFormat('d/m/Y H:i:s', '13/09/2016 13:24:44');
$date_b = DateTime::createFromFormat('d/m/Y H:i:s', '13/09/2016 20:24:44');
$interval = date_diff($date_a,$date_b);
echo $interval->format('%H:%i:%s');
Быть более конкретным для вашего случая,
$date_a = new DateTime('d/m/Y H:i:s', $p_fim[$passo]);