Подтвердить что ты не робот

В каком формате принимается библиотека 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.

4b9b3361

Ответ 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.