D3时间格式化语言环境

时间:2015-12-23 14:12:36

标签: d3.js nvd3.js angular-nvd3

是否可以从D3时间格式返回本地化信息?

d3.time.format('%B %Y')(new Date(d))

这总是返回EN值。

1 个答案:

答案 0 :(得分:3)

是的,这是可能的。有一个github wiki页面here

基本上您需要使用d3.locale(definition)方法。定义是这样的对象:

{
  "decimal": ".",
  "thousands": ",",
  "grouping": [3],
  "currency": ["$", ""],
  "dateTime": "%a %b %e %X %Y",
  "date": "%m/%d/%Y",
  "time": "%H:%M:%S",
  "periods": ["AM", "PM"],
  "days": ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
  "shortDays": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
  "months": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
  "shortMonths": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
}

<强>更新

  

数字,日期和货币的格式因语言和区域而异。虽然默认版本的D3适用于美国英语,但您可以根据需要通过加载新的区域设置来更改D3格式化程序的行为。

因此,区域设置不会自动识别,您应该自己加载。

小例子:

var ua = d3.locale(<uk_UA definition>); //you need this object to be available everywhere this locale is required
ua.timeFormat('%B %Y'); //use this instead of d3.time.format('%B %Y')