Как отформатировать дату и время в легенде Dygraphs в соответствии с локалью пользователя

У меня есть график, отображающий выходную мощность устройства с течением времени, и я хотел бы отформатировать легенду, чтобы она отображала временные метки в стиле текущего пользователя (например, в США будет отображаться MM/DD/YY h:m:s am/pm, а в ЕС покажет DD/MM/YYYY HH:MM:SS и т. д.).

В настоящее время он установлен по умолчанию следующим образом:

введите здесь описание изображения

Я передаю объект JS Date() для оси X и обнаружил, что вы можете изменить метки оси x, но я не могу найти информацию об изменении формата легенды при наведении курсора на график.


person Sergey Smirnov    schedule 21.08.2015    source источник
comment
Я не знаком с библиотекой Dygraphs. Если у вас есть возможность передать строку, вы можете использовать даты в формате локали, но, к сожалению, Date.prototype.toLocaleDateString поддерживается не во всех браузерах, поэтому вам придется использовать полифилл. developer.mozilla.org/en- США/документы/Интернет/JavaScript/Справочник/   -  person Palpatim    schedule 22.08.2015
comment
Я посмотрел на Date.toLocaleString(), и это то, что я хотел бы использовать, тем более что у меня уже есть объекты Date() внутри Dygraphs. Проблема в том, что Dygraphs говорит использовать toLocaleString(), и я нигде не могу найти в их документах, как это сделать. Я нашел эту часть, но без примеров использования она не так полезна.   -  person Sergey Smirnov    schedule 22.08.2015


Ответы (1)


Вы обнаружили параметр axisLabelFormatter, который позволяет управлять форматированием меток по оси X.

Для управления форматированием меток в легенде необходимо использовать valueFormatter

g = new Dygraph(div, data,
    axes: {
        x: {
            axisLabelFormatter: function (d, gran) {
                return d.toLocaleDateString();
            },
            valueFormatter: function (ms) {
                return new Date(ms).toLocaleDateString();
            }
        }
    }
});

См. эту скрипту для полностью проработанного примера. Странно ли, что одна функция форматирования принимает дату, тогда как другая принимает миллисекунды с эпохи? Да. К сожалению, это несоответствие, с которым мы застряли.

person danvk    schedule 24.08.2015
comment
Именно то, что я искал. Благодарю вас! - person Sergey Smirnov; 24.08.2015