2015-09-07 31 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

哇,我讀了那個頁面很多次,實際上沒有找到答案。 –