Не удалось проанализировать строку времени: она работает хорошо на моем локальном, но на сервере

70
6

У меня есть код, который работает на моем localhost, но на сервере он выдает ошибку. ошибка: Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (@1645.0000000006) at position 14 (0): Unexpected character

мой код:

function secondsToTime($seconds)
{
$arr = array();
$dtF = new DateTime('@0');
$dtT = new DateTime("@$seconds");
$arr[0] = $dtF->diff($dtT)->format('%h');
$arr[1] = $dtF->diff($dtT)->format('%i');
$arr[2] = $dtF->diff($dtT)->format('%s');
return $arr;
}
print_r(secondsToTime("1645.0000000006"));

в чем проблема? Спасибо всем

спросил(а) 2018-04-03T11:45:00+03:00 2 года, 7 месяцев назад
1
Решение
71

По-видимому, обработка микросекунд изменилась вокруг PHP 7.1, и PHP принимает десятичные значения как допустимые временные метки, начиная с этой версии, но не раньше. Если вам нужно сделать его совместимым с предыдущими версиями, вам нужно указать свой float в int:

$dtT = new DateTime('@' . (int)$seconds);

ответил(а) 2018-04-03T11:59:00+03:00 2 года, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема