【问题标题】:D3 time formatting localeD3 时间格式化语言环境
【发布时间】:2016-03-29 23:56:30
【问题描述】:

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

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

这总是返回 EN 值。

【问题讨论】:

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


    【解决方案1】:

    是的,这是可能的。有一个 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')
    

    【讨论】:

    • 好的,但是不会自动识别区域设置?每个语言环境我必须插入不同的定义对象?
    • @ieaglle,"ready to go" 定义是否存在于某处?所以我不需要自己定义它们。
    • @BohdanKuts,是的,他们是here
    • @ieaglle 谢谢!遗憾的是没有月份名称、工作日名称和日期格式。
    猜你喜欢
    • 2021-09-26
    • 2022-07-28
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    相关资源
    最近更新 更多