Ошибка 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. Так ли это? Нужно преобразовать, прежде чем передать значение?

Author: Diego, 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]);
 6
Author: Daniel Omine, 2016-09-13 18:54:34