2015-09-07 2 views
1

Я знаю о that page, но как мне использовать этот локаль для отображения локализованных месяцев и дней на оси? У меня есть даты, подобные «2014-11-14T00: 00: 00 + 03: 00», и теперь я просто использую new Date(), а не специальный d3.time.format. Если я сделаю locale.timeFormat, как реализовать это для правильного отображения на оси?Как сделать локализацию оси d3.js?

Я пробовал одну вещь. Сделал d3.locale, сделал локализованную переменную формата с locale.timeFormat('%b'), а затем положил ее в функцию tickFormat. Все в порядке, у меня были локализованные месяцы. Но без специальных меток формата на оси более гибкие - они будут показывать вам годы, если у вас большой домен, и дни, если у вас мало. Возможно ли сделать такие гибкие метки предпочтительным языком?

Спасибо!

ответ

2

Согласно этой док странице: https://github.com/mbostock/d3/wiki/Time-Formatting#format_multi

формат времени по умолчанию используется d3.time.scale реализуется как:

var format = d3.time.format.multi([ 
    [".%L", function(d) { return d.getMilliseconds(); }], 
    [":%S", function(d) { return d.getSeconds(); }], 
    ["%I:%M", function(d) { return d.getMinutes(); }], 
    ["%I %p", function(d) { return d.getHours(); }], 
    ["%a %d", function(d) { return d.getDay() && d.getDate() != 1; }], 
    ["%b %d", function(d) { return d.getDate() != 1; }], 
    ["%B", function(d) { return d.getMonth(); }], 
    ["%Y", function() { return true; }] 
]); 

Чтобы локализовать шкалу времени с той же логикой , вы можете передать тот же массив в свою локаль:

var localeMultiTimeFormat = yourLocale.timeFormat.multi([ 
    [".%L", function(d) { return d.getMilliseconds(); }], 
    ... 
]); 
yourScale.tickFormat(localeMultiTimeFormat); 
+0

Вау, я много читал эту страницу раз и на самом деле не нашел ответа. –

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