# d3格式化和本地化操作

# d3-format

npm install d3-format
[​[fill]align][sign][symbol][0][width][,][.precision][~][type]
  • 百分比设置
//(格式:0.n%=>n表示几位小数)
console.log(d3.format(".0%")(0.123))//12%
console.log(d3.format(".2%")(0.123))//12.30%	
  • 保留小数位
//(格式:0.nf=>n表示几位小数)
console.log(d3.format(".2f")(0.1 * 3))
  • 加货币单位
console.log(d3.format("$.2f")(-3.5)) //−$3.50
console.log(d3.format("($.2%")(3.5)) //$350.00
  • 填充空位 space-filled and signed
//+n
console.log(d3.format("+10")(42))
  • 填充符号
console.log(d3.format("@^6")(42)) //@@42@@
  • 带n个有效数字的SI前缀
console.log(d3.format(".4s")(426442)) //426.4k
console.log(d3.format(".2s")(426442)) //430k
  • 保留n位数
console.log(d3.format(".6")(326981)) //326981
console.log(d3.format(".3")(326981)) //3.27e+5
  • ,添加和四舍五入位数
console.log(d3.format(",.1r")(4293))//4,000 
console.log(d3.format(",.2r")(4293))//4,300

# d3-time-format

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Time Scale</title>
    <link rel="stylesheet" type="text/css" href="../../css/styles.css"/>
    <script src="http://d3js.org/d3.v6.min.js"></script>
</head>

<body>

<div id="time" class="clear">
    <span>Linear Time Progression<br></span>
    <span>Mapping [01/01/2016, 12/31/2016] to [0, 1200]<br></span>
</div>

<script type="text/javascript">
    var start = new Date(2016, 0, 1), // <-A
        end = new Date(2016, 11, 31),
        range = [0, 1200],
        time = d3.scaleTime().domain([start, end]) // <-B
            .rangeRound(range), // <-C
        max = 12,
        data = [];

    for (var i = 0; i < max; ++i){ // <-D
        var date = new Date(start.getTime());
        date.setMonth(start.getMonth() + i);
        data.push(date);
    }
	
    function render(data, scale, selector) { // <-E
        d3.select(selector).selectAll("div.fixed-cell")
                    .data(data)
                .enter()
                    .append("div")
                        .classed("fixed-cell", true)
                        .style("margin-left", function(d){ // <-F
							console.log(scale(d) + "px")
                            return scale(d) + "px";
                        })
                        .html(function (d) { // <-G
							console.log(d)
                            var format = d3.timeFormat("%x"); // <-H
                            return format(d) + "<br>" + scale(d) + "px";
                        });
    }
    render(data, time, "#time");
</script>

</body>

</html>

 var format = d3.timeFormat("%x"); 
  • %a 星期缩写 Fri
  • %A 星期全称 Monday
  • %b 月缩写 Jan
  • %B 月全称 February
  • %d 在本月的天数,不足两位自动补0: 01
  • %e 在本月的天数,不足两位自动补空格 " 1"
  • %H 小时[00,23]
  • %I 小时[01,12]
  • %j 一年中的第[001,366]天
  • %m 月份[01,12]
  • %M 分钟[00,59]
  • %L 毫秒数[000,999]
  • %p AM/PM
  • %Q - UNIX 毫秒,即时间戳
  • %S 秒[00,60]
  • %s - UNIX 秒.
  • %x 日期部分 等于%m/%d/%Y 1/1/2016
  • %X 时间部分 等于%M/%H/%S %p 12:00:00 AM
  • %y 两位数年份[00,99]
  • %Y 四位数年份 如2016
var format = d3.timeFormat("%Y+%y-%j")
//2016+16-001

# d3-dsv

这个模块提供了一个针对分隔符文件/字符串的解析和格式化工具

npm install d3-dsv

CSV 与 TSV 的转换以及格式化是内置的,比如解析:

d3.csvParse("foo,bar\n1,2"); // [{foo: "1", bar: "2"}, columns: ["foo", "bar"]]
d3.tsvParse("foo\tbar\n1\t2"); // [{foo: "1", bar: "2"}, columns: ["foo", "bar"]]

格式化

d3.csvFormat([{foo: "1", bar: "2"}]); // "foo,bar\n1,2"
d3.tsvFormat([{foo: "1", bar: "2"}]); // "foo\tbar\n1\t2"

使用不同的分隔符,比如 "|" 来作为分割字符,则使用 d3.dsvFormat:

var psv = d3.dsvFormat("|");	
console.log(psv.parse("foo|bar\n1|2")); // [{foo: "1", bar: "2"}, columns: ["foo", "bar"]]

# d3.locale(definition)

d3本地化配置

# d3时间设置 d3-time-format

# d3.timeParse 解析日期

var parseTime = d3.timeParse("%B %d, %Y");
console.log(parseTime("June 30, 2015"))
//Tue Jun 30 2015 00:00:00 GMT+0800 (中国标准时间)

# d3.timeFormat 格式化日期

var formatTime = d3.timeFormat("%B %d, %Y");
console.log(formatTime(new Date))
//February 08, 2021
%a - 简写的周?.*
%A - 周?的全称.*
%b - 简写的月.*
%B - 月的全称.*
%c - 区域日期和时间, 比如 %x, %X.*
%d - 使用 0 填补位数的天 [01,31].
%e - 使用空格填补位数的天 [ 1,31]; 等价于 %_d.
%f - 微秒 [000000, 999999].
%H - 24 小时制小时 [00,23].
%I - 12 小时制小时 [01,12].
%j - 一年中的第几天 [001,366].
%m - 月份 [01,12].
%M - 分钟 [00,59].
%L - 毫秒 [000, 999].
%p - AM 或 PM.*
%Q - UNIX 毫秒.
%s - UNIX 秒.
%S - 秒 [00,61].
%u - 一周中的第几天 [1, 7] (ISO 8601)
%U - 一年中的第几周 [00,53].
%V - 一年中的第几周 [01,53] (ISO 8601)
%w - 从周日开始算起,是所在周的第几天 [0,6].
%W - 一年中的第几周,从周一开始算新的一周 [00,53].
%x - 区域日期格式, 比如 %m/%d/%Y.不同地方格式不一样*
%X - 区域时间格式, 比如 %H:%M:%S.不同地方格式不一样*
%y - 所在世纪的第几年( 16 ) [00,99].
%Y - 年的全写( 2016 ).
%Z - 返回当前时区,比如 -0700, -07:00, -07, or Z.
%% - 百分比 (%).
最后更新: 2/23/2021, 8:52:32 AM