В каком формате принимается библиотека highcharts js для дат?
Я использую highcharts и не могу понять, какой ввод даты должен быть из рельсов, датируется форматом, принятым в формате highcharts, для дат.
В моем файле миграции я сохраняю дату следующим образом:
t.date :consumption_date
Значение сохраняется в этом формате "2012-03-25", и, переходя к терминалу и находя запись, я получаю следующее:
=> Sat, 31 Mar 2012
Когда диаграмма отображает, отдельные точки отображают Недействительная дата. Следующий массив выводит на высокие диаграммы для рендеринга
[[Sun, 25 Mar 2012, 1158], [Sat, 31 Mar 2012, 1200]]
Формат, который использует highcharts в одной из своих демо-диаграмм, когда данные передаются в jquery, имеет форму:
[[Date.UTC(1970, 9, 27), 0 ], [Date.UTC(1970, 10, 10), 0.6 ]]
Как я могу избавиться от недействительной даты, отправив правильный формат даты в highcharts.
Ответы
Ответ 1
Internally Highcharts использует цифры даты javascript (число миллисекунд с 1 января 1970 года) для представления дат. См. ссылка на Mozilla.
Чтобы получить даты на оси, вам сначала нужно установить тип оси в "datetime":
xAxis: {
type: 'datetime'
}
У вас есть несколько опций при указании серийных данных (все три примера производят одну и ту же диаграмму):
-
Установка начальной точки и использование фиксированного интервала между точками
pointStart: Date.UTC(2012, 2, 6, 10),
pointInterval: 1000 * 60 * 60,
data: [5, 6, 4]
-
Указание точной даты с использованием метода Date.UTC. Таким образом, он читается для людей:
data: [
[Date.UTC(2012, 2, 6, 10), 5],
[Date.UTC(2012, 2, 6, 11), 6],
[Date.UTC(2012, 2, 6, 12), 4]]
-
Прямое указание времени эпохи:
[[1331028000000, 5], [1331031600000, 6], [1331035200000, 4]]
Пример jsfiddle
Ответ 2
Добавляя к @eolsson, время в эпоху, как правило, происходит с технической точки зрения, объекты Date() - это javascript, а не JSON, и вы вряд ли найдете готовый сериализатор, который их генерирует.
Вы также захотите отформатировать дату, например:
xAxis: {
type: 'datetime',
labels: {
formatter: function() {
return Highcharts.dateFormat('%e %b', this.value*1000); // milliseconds not seconds
},
}
}
Форматирование даты выполнено php style.