Как изменить метку времени UT C на графиках Highstock? - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть API на https://gmlews.com/api/data. И мой код для чартовых таблиц в http://jsfiddle.net/estri012/b5nhezLs/8/.

Моя проблема в том, что моя метка времени выглядит так: «2020-03-15T11: 46: 10 + 07: 00». Поэтому на графике должно быть 15 марта 11:46 вместо 15 марта 04:46. Но график показывает UT C время. Как это исправить, чтобы график показывал местное время с моим? И последние три данных на графике показывают 18 марта вместо 19 марта. В моем API последние три данные должны быть 19 марта, а не 18 марта.

$(function () {

$.getJSON('https://gmlews.com/api/data', function (data) {
console.log(data);
function format_two_digits(n) {
  return n < 10 ? '0' + n : n;
}
var accelero_x = [], timestamp = [];
  for (var i=0; i<data.length; i++){
  let inArr = [];
  inArr.push(Date.parse(data[i].timestamp));
  inArr.push(data[i].accelero_x);
    accelero_x.push(inArr);
    timestamp.push(data[i].timestamp);
 }
  console.log(accelero_x);
  console.log(timestamp);

    // Create the chart
    window.chart = new Highcharts.StockChart({
        chart: {
            renderTo: 'container'
        },

        rangeSelector: {
            inputEnabled: true,
                    buttons: [{
                        type: 'day',
                        count: 1,
                        text: '1D',
                    },
                    {
                        type: 'week',
                        count: 1,
                        text: '1W',
                    },
                    {
                        type: 'month',
                        count: 1,
                        text: '1M',
                    },
                    {
                        type: 'year',
                        count: 1,
                        text: '1Y',
                    }, {
                        type: 'all',
                        count: 1,
                        text: 'All',
                    }],
            inputDateFormat: '%d-%m-%Y',
            inputDateParser: function (value) {
                value = value.split('-');
                return Date.UTC(
                    parseInt(value[2]),
                    parseInt(value[1]) - 1,
                    parseInt(value[0])
                );
            },
        },

    title: {
    text: 'Accelero X'
},

xAxis: {
    type: "datetime",
  labels: {
        /* format: '{value:%Y-%m-%d}', */
        formatter: (currData) => {
          const currDate = new Date(currData.value);
          return format_two_digits(currDate.getHours()) + ':' + format_two_digits(currDate.getMinutes());
        },
        rotation: 45,
        align: 'left'
    }
},
series: [{
    name: 'Accelero X',
    data: accelero_x,
    type: 'spline',
    tooltip: {
        valueDecimals: 2
    }
}]
}, function (chart) {

        // apply the date pickers
        setTimeout(function () {
            $('input.highcharts-range-selector', $('#' + chart.options.chart.renderTo)).datepicker();
        }, 0)
    });
});


// Set the datepicker's date format
$.datepicker.setDefaults({
    dateFormat: 'dd-mm-yy',
    beforeShow: function() {
      var date = $(this).val().split('-');
        $('input.highcharts-range-selector').datepicker("setDate", new Date(parseFloat(date[0]), parseFloat(date[1]) - 1, parseFloat(date[2])));
    },
    onSelect: function (dateText) {
        this.onchange();
        this.onblur();
    }
});

});

1 Ответ

1 голос
/ 30 апреля 2020

Попробуйте установить для time.useUTC значение false - https://api.highcharts.com/highcharts/time.useUTC

Демо: http://jsfiddle.net/BlackLabel/avhw7km8/

  time: {
    useUTC: false
  },
...