Резюме
Я пытаюсь построить линейный график в Google Charts с датами в качестве оси X. У меня все отсортировано, но для этого требуется передать даты как объекты Date
, то есть new Date(2005, 3, 13)
.Есть ли способ передать его как временную метку Unix или, возможно, строку?
Подробнее
Итак, у меня есть куча данных в PHP, которые я хочу изобразить в виде графика. Я беру данные и упорядочиваю их в массив в формате, который будет создавать правильный формат JSON при выполнении через json_encode()
согласно документам данных Google:
$graph_data = array(
'cols' => array(
array(
'id' => 'date',
'label' => 'Date',
'type' => 'datetime',
),
array(
'id' => 'odometer',
'label' => 'Miles',
'type' => 'number',
),
),
'rows' => array(
array(
'c' => array(
array( 'v' => 1331479502 ),
array( 'v' => 56872 ),
),
),
array(
'c' => array(
array( 'v' => 1331375984 ),
array( 'v' => 55324 ),
),
),
array(
'c' => array(
array( 'v' => 1328966460 ),
array( 'v' => 54244 ),
),
),
),
);
{"cols":[{"id":"date","label":"Date","type":"datetime"},{"id":"одометр","label":"Мили"," тип":"число"}],"строки":[{"c":[{"v":1331479502},{"v":56872}]},{"c":[{"v":1331375984 },{"v":55324}]},{"c":[{"v":1328966460},{"v":54244}]}]}
Таким образом, создание JSON не работает, но API хочет, чтобы даты передавались как объект Date
, а не число (или строка). Он выдает ошибку прямо сейчас, но если я изменю его с datetime
на number
, он отлично отобразится, поэтому я знаю, что мой формат JSON правильный.
Могу ли я что-нибудь сделать, чтобы API принимал временные метки Unix или, возможно, какую-то строку?
Когда я набрал это, я понял, что, возможно, я мог бы использовать какой-нибудь Javascript для обхода объекта JSON и замены временных меток объектами Date
, но было бы неплохо, если бы мне не приходилось выполнять любые манипуляции с данными через Javascript.
РЕДАКТИРОВАТЬ
Я прошел часть пути, установив тип
на число
и передав даты следующим образом:
array(
'c' => array(
array( 'v' => 1331479502, 'f' => 'March 11th, 2012' ),
array( 'v' => 56872 ),
),
),
Это делает f
отображается во всплывающей подсказке (ура!), но значение v
по-прежнему используется для меток осей. Хм.
РЕДАКТИРОВАТЬ #2
Похоже, использование DataViewдля преобразования временной метки числа
в дату может иметь некоторый потенциал, но я еще не понял этого.