Формат даты в json

Jurgen s
На сайте с 21.05.2008
Offline
153
5731

Добрый день, столкнулся с такой проблемой.

Получаю от api яндекса данные в формате json через json_decode привожу их в удобный вид

stdClass Object

(
[modelOpinions] => stdClass Object
(
[opinion] => Array
(
[0] => stdClass Object
(
[id] => 1654002
[date] => 1244616164000
[grade] => 1
[agree] => 13
[reject] => 1
[visibility] => ANONYMOUS
[pro] => так как сумка все ж таки женская, то по первости выглядит очень достойно!=)Очень приятного серого цвета, качественно пошита, фурнитурка (после полутора лет использования и в хвост и в гриву вся на месте)
[contra] => легко пачкается=( довольно тяжеленькая + мой не слишком слимовый ноутбук (asus f5n)+ питание к нему + пару-тройку бумаг+ кошелек+ мобильник + ...(все нужное необходимое в женской сумке)..итого: ОГОГО!! сколько все это весит!=)
[comments] => Array
(
)

[usageTime] => FEW_YEARS
[anonymous] => 1
)

)

[total] => 1
[page] => 1
[count] => 1
)

)

Как быть с датой? как вот это [date] => 1244616164000 преобразовать в обычную, читабельную дату? Чего то и нагуглить ничего по этому поводу не могу

http://police-ua.com/ (http://police-ua.com/) Форум сотрудников МВД Украины
Joker-jar
На сайте с 26.08.2010
Offline
154
#1

Не похоже на Unix date. В документации ничего нет, что это за формат такой?

Jurgen s
На сайте с 21.05.2008
Offline
153
#2

ну это можно попробовать как юникс дату перевести, но это будет тыщи через две лет)

вот что написано в доке

date date Дата

Дата написания отзыва.

я так понимаю в json есть проблемы с передачей даты, но перелезать на xml не хочу, отписал в саппорт, но думал может на форуме быстрее

ДП
На сайте с 23.11.2009
Offline
203
#3

А попробуйте поделить это число на тысячу и использовать как unix timestamp.

В js же метод getTime() возвращает количество миллисекунд с 1 января 1970 , а в php используются просто секунды

Jurgen s
На сайте с 21.05.2008
Offline
153
#4
Дикий пионер:
А попробуйте поделить это число на тысячу и использовать как unix timestamp.
В js же метод getTime() возвращает количество миллисекунд с 1 января 1970 , а в php используются просто секунды

Так дата больше похожа на правду... для чего так извращаться нужно было... Хоть бы в доке указали это

S
На сайте с 13.10.2014
Offline
171
#5

var dt = new Date(1244616164000);

а дальше по мануалу https://msdn.microsoft.com/en-us/library/cd9w2te4.aspx

это если Js

если ПХП то надо перевести в секунды ну и дальше как обычно

Required. If a numeric value, dateVal represents the number of milliseconds in Universal Coordinated Time between the specified date and midnight January 1, 1970. If a string, dateVal is parsed according to the rules in Formatting Date and Time Strings (JavaScript). The dateVal argument can also be a VT_DATE value as returned from some ActiveX objects.
W
На сайте с 09.04.2013
Offline
46
#6

Да, это милисекунды.Работать на PHP можно так:


$date = new DateTime();
$date->setTimestamp(1244616164000/1000);
echo $date->format("d-m-Y H:i:s").PHP_EOL;
echo $date->format('Y-m-d\TH:i:sP').PHP_EOL;

Убедится, что все работает правильно, можно тут https://tech.yandex.ru/market/content-data/doc/dg/reference/model-id-opinion-docpage/ ,подставив timestamp из примера и сравнив xml и json ответы.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий