Извлечение временной метки из XML-канала с помощью PHP, но, похоже, состоит из многих цифр - PullRequest
1 голос
/ 21 марта 2010

Я вытягиваю метку времени из канала, и она дает 12 цифр (1269088723811). Когда я конвертирую его, он выглядит как

1901-12-13 20:45:52,

но если я поставлю метку времени в http://www.epochconverter.com/, то получится

Суббота, 20 марта 2010 12:38:43 по Гринвичу, это правильное время.

epochconverter.com упоминает, что это может быть в миллисекундах, поэтому я изменил скрипт, чтобы позаботиться об этом, используя

$mil = $timestamp;<br> $seconds = $mil / 1000;<br> $date = date('Y-m-d H:i:s', date($seconds));

но она все равно преобразует дату неправильно, 1970-01-25 20: 31: 23.

Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 21 марта 2010
$xml = new SimpleXMLElement('<foo><a>1269088723811</a></foo>');
echo date('Y-m-d H:i:s', (float)$xml->a / 1000);

и

$xml = new SimpleXMLElement('<foo><a>1269088723811</a></foo>');
$ts = substr($xml->a, 0, -3);
echo date('Y-m-d H:i:s', $ts);

оба печатаются 2010-03-20 07:38:43 (на моей машине Европа / Берлин)

2 голосов
/ 21 марта 2010

Это, похоже, усеченный вывод microtime () . Кажется, единственное, что вы делаете неправильно, это использование date($seconds) вместо необработанного $seconds. Попробуйте

$date = date('Y-m-d H:i:s', $seconds); 
...