我知道that page,但我应该如何使用该区域设置在轴上显示本地化的月份和日期?我有这样的约会" 2014-11-14T00:00:00 + 03:00"现在我只使用new Date()
,而不是特殊的d3.time.format。如果我要创建locale.timeFormat,如何实现它在轴上正确显示?
我试了一件事。制作d3.locale
,使用locale.timeFormat('%b')
制作本地化格式变量,然后将其放入tickFormat函数中。没关系,我有几个月的本地化。但是,轴上没有特殊的格式标签更灵活 - 如果你有大的域名,他们会告诉你几年,如果你有小的话,它们会显示几天。是否可以用首选语言制作这种灵活的标签?
谢谢!
答案 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);