У меня была эта ошибка когда пытаюсь создать новый объект datetime, используя метку времени:
исключение: Датавремя:: методConstruct(): не удалось выполнить синтаксический анализ строки времени (1372622987) в положении 8 (8): неожиданный символ в DateTime-и GT; методConstruct()
Код создания объекта:
$start_date = new DateTime( "@{$dbResult->db_timestamp}" );
Где $dbResult->db_timestamp является допустимым метку времени Unix, взятые из базы данных. Метки вопроса:
1372622987
Я бы понял эту ошибку недопустимые форматы передается, но это подлинный метки.
Причина это очень странно: я так запустил скрипт, чтобы создать новый объект datetime с меткой времени передается как значение жестко, и он не сообщил никаких ошибок.
Это, кажется, был один, но мне нужно объяснение, если есть один, как я могу'т позволить этому случиться снова.
Вы должны использовать вместо setTimestamp, если вы жестко кодировать его:
$start_date = new DateTime();
$start_date->setTimestamp(1372622987);
в вашем случае
$start_date = new DateTime();
$start_date->setTimestamp($dbResult->db_timestamp);
Используйте createFromFormat
метод:
$разница = типа datetime::createFromFormat (на"Щ" и, $dbResult->db_timestamp);
Обновление
Теперь я рекомендую использовать углерода
изменить ваш код на этот
$start_date = new DateTime( "@" . $dbResult->db_timestamp );
и он будет работать нормально
Этот работал для меня.
/**
* return date in specific format, given a timestamp.
*
* @param timestamp $datetime
* @return string
*/
public static function showDateString($timestamp)
{
if ($timestamp !== NULL) {
$date = new DateTime();
$date->setTimestamp(intval($timestamp));
return $date->format("d-m-Y");
}
return '';
}