2012-11-04 3 views
1

Я играл с Bing API с помощью json и PHP. Массив выплевывает следующий за даты:Как преобразовать эту метку времени в PHP? Bing Maps API

[end] => /Date(1354867200000)/ 
[lastModified] => /Date(1349441488000)/ 

я думал, что это была временная метка Unix, но я не думаю, что это. То, что я был preg_replace как этот

$last_updated = $resource->lastModified; 
$last_updated_timestamp = preg_replace('/[^0-9.]*/','',$last_updated); 

Затем попытался преобразовать его в дату

$last_updated_date = date('l F d Y g:i:s A',$last_updated_timestamp); 

Результаты, которые он показывает мне на диапазон дат назад от 1967 года до 2000 Является ли это какой тип времени я не знаю? Если да, то как это исправить? Любая помощь будет оценена!

ответ

1

Номер в миллисекундах-с-Эпоха (1 января 1970 года в полночь   — миллисекунды версии временной отметки unix). Это довольно обычный способ представления дат в JSON (поскольку JSON не имеет типа даты).

Так getdate(theNumber/1000) даст вам дату (так как getdate ожидает секунды, а не миллисекунды, начиная с эпохи).

+0

Спасибо! Я попробовал, но что-то все еще кажется немного. С API-интерфейсом Bing Maps он должен показывать текущие события, но время показывает мне всевозможные случайные 29 июня - 29 октября 2012 года. Все они в случайном порядке. Я бы подумал, что у Microsoft будет больше смысла заказывать их при спуске и предоставлять обновленную информацию нет? Код Код выглядит следующим образом: $ last_updated = preg_replace ('/ [^ 0-9.] * /', '', $ Last_updated); \t $ last_updated = getdate ($ last_updated/1000); \t \t $ last_updated_timestamp = $ last_updated [0]; \t $ last_updated_date = date ('l F d Y g: i: s A', $ last_updated_timestamp); – user1701252

+0

@ user1701252 Здесь у вас есть информация о том, как работает 'date()', если вы еще этого не сделали. http://php.net/manual/en/function.date.php Смешанные даты могут исходить из форматов даты, которые, вероятно, отформатированы неправильно. –

+0

@ user1701252: Я не могу помочь вам с Bing или с тем, что Microsoft делает вещи рационально. :-) Я могу сказать вам, что '/ Date (nnnn) /' является ** стандартным способом представления дат в JSON и что 'nnnn' - миллисекунды-с-эпохи. Первая дата в вашем вопросе - 07-дек-2012 в полночь GMT. Вторая дата в вашем вопросе - 05 октября 2012 года в 12:51:28 GMT (для меня, 13:51:28 British Summer Time). –

0

Если то, что вы хотите сделать, это преобразовать метку времени UNIX в формат даты, вы можете это сделать, выполнив следующие действия:

date("F j, Y g:i a", strtotime($unix_timestamp)); 

Где $unix_timestamp ваш Отметка времени Unix в этом случае. Вы всегда можете распечатать его для тестирования, добавив echo.

Так что в данном случае это может быть:

$last_updated_date = date("F j, Y g:i a", strtotime($last_updated_timestamp)); 
Смежные вопросы