У меня установлена следующая настройка PHP:
$ php --version
PHP 7.1.8 (cli) (built: Aug 1 2017 21:10:46) ( ZTS MSVC14 (Visual C++ 2015) x86
)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Xdebug v2.6.1, Copyright (c) 2002-2018, by Derick Rethans
Я использую xampp, поэтому я запускаю 32-bit version
на моей 64-bit windows 8.1
машине.
Я хотел бы преобразовать следующую метку времени в экземпляр Datetime:
$timestamp = 1546438627830;
$t = DateTime::createFromFormat('U',$timestamp);
echo $t;
Однако я получаю следующее исключение:
Catchable fatal error: Object of class DateTime could not be converted to string
Я думал, что моя 32-битная версия PHP может вызвать некоторые проблемы. Есть предложения, что я делаю не так?
Спасибо заранее за ответ!
UPDATE
После использования var_dump () я получаю следующее:
$timestamp = 1546438627830;
$t = DateTime::createFromFormat('U',$timestamp);
var_dump($t);
Вывод:
class DateTime#1 (3) {
public $date =>
string(20) "50974-09-09 05:30:30"
public $timezone_type =>
int(1)
public $timezone =>
string(6) "+00:00"
}
Как вы видите, неправильная метка времени преобразуется?
Есть предложения, почему?
UPDATE
Попробовав несколько вещей, я нашел следующее решение:
$timestamp = 1546438627830;
$result = date ('c', (int) round ($timestamp / 1000));
$msec = (int) $timestamp % 1000;
$t = strtotime(str_replace ('+00:00', sprintf (".%03dZ", $msec), $result));
$finalTime = DateTime::createFromFormat('U', $t);
var_dump($finalTime);