2015-11-27 2 views
2

Я использую ZingChart для отображения данных в виде графика. В символе я показываю данные за время, которое я получаю с сервера. ZingChart по умолчанию задает время клиента.Как установить часовую зону как плавающий в Zing Chart?

Я нашел, что мы можем установить часовой пояс на диаграмме только как целочисленное значение. Однако, некоторый часовой пояс UTC + 10: 30, UTC + 04: 30 ...

Итак, как мы можем установить часовой пояс для ZingChart с указанием правильного времени? И если этот день имеет летнее время, как мне его исправить.

JSON scripts

+0

Вы могли бы показать json и javascript того, как вы настраиваете свою диаграмму? Используете ли вы ZingChart для обработки запросов с вашего сервера с использованием свойства 'refresh' или вы обрабатываете это отдельно? –

+0

Спасибо за внимание! –

+0

В моем присутствии сервер в UTC +1: windhoek и клиент в UTC +7: Ha Noi и летнее время началось ...Belows являются JSON-скрипт: \t "graphset": [ { "масштаб-х": { "Max-метки": 7, "масштабирование": истинное, "мин-значение": 1445884200000, "шаг" : 3600000, "преобразования": { "типа": "дата", "все": "% M% d,% Y
% H:% I% A", "руководство": { «видимый «ложь }, "деталь": { "видимый": ложные } }} , \t} –

ответ

3

К сожалению, кажется, что ZingChart поддерживает только целый час смещение часового пояса. Это не только не учитывает часовые пояса с фиксированными дробными часовыми смещениями, но также неправильно учитывает часовые пояса, которые используют летнее время.

Пример in the documentation говорит:

... Например, чтобы установить часовой пояс для тихоокеанского времени, вы бы добавить: "timezone":-8.

Это неправильное явление, так как время Тихоокеанского времени только в UTC-8 в стандартное время. Когда он находится в дневное время, он использует UTC-7.

Это распространенная ошибка. См. «Часовой пояс! = Смещение» в the timezone tag wiki. Моя рекомендация к разработчикам ZingChart будет:

  1. Везде вы поддерживаете timezone:-8 вы должны также поддерживать дробные час смещения, такие как timezone:5.5 или timezone:8.75.

  2. Вы также должны поддерживать указанные идентификаторы часовых поясов, такие как "America/Los_Angeles". Чтобы заставить их работать, вам необходимо предоставить функцию, которую разработчик может подключить. Не пытайтесь реализовать функцию напрямую, так как для этого есть several libraries already available. Например, разработчик может объединить ZingChart с моментом-часовым поясом, написав что-то вроде:

    zingchart.fnTZOffset = function(timestamp, timeZone) { 
        return moment(timestamp).tz(timeZone).utcOffset()/60; 
    } 
    

    ZingChart будет вызывать эту функцию, когда временная зона была строка и будет применяться Результирующее смещение к конкретной точке данных.

Без поддержки ZingChart вы не можете сделать, чтобы правильно поддерживать часовые пояса.

+0

Спасибо за ваш ответ! Я думаю, что вы правы, но, к сожалению, ZingChart поддерживает только смещения часа как целочисленные. Я использовал выражение: (local - utctime)/3600 для получения часового пояса. Но если у него есть летнее время, у меня будут проблемы. Пока C++ не поддерживает часовой пояс. –

+1

Спасибо Мэтту, мы определенно будем работать над поддержкой дробных часов и придумаем более простой способ поддержки часовых поясов, чтобы это было проще для конечных пользователей. –

0

Еще одно решение проблемы с летним временем, которое некоторые пользователи ZingChart упомянули в прошлом, - MomentJS. http://momentjs.com

Смежные вопросы