如何定位d3.js轴?

时间:2015-09-07 14:41:04

标签: d3.js localization

我知道that page,但我应该如何使用该区域设置在轴上显示本地化的月份和日期?我有这样的约会" 2014-11-14T00:00:00 + 03:00"现在我只使用new Date(),而不是特殊的d3.time.format。如果我要创建locale.timeFormat,如何实现它在轴上正确显示?

我试了一件事。制作d3.locale,使用locale.timeFormat('%b')制作本地化格式变量,然后将其放入tickFormat函数中。没关系,我有几个月的本地化。但是,轴上没有特殊的格式标签更灵活 - 如果你有大的域名,他们会告诉你几年,如果你有小的话,它们会显示几天。是否可以用首选语言制作这种灵活的标签?

谢谢!

1 个答案:

答案 0 :(得分: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);