首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何转换时间范围来显示小时而不是日期?(nvd3图表)

如何转换时间范围来显示小时而不是日期?(nvd3图表)
EN

Stack Overflow用户
提问于 2015-09-30 14:41:51
回答 2查看 824关注 0票数 1

http://plnkr.co/edit/19D5cnrVYdUrMlblQARy?p=preview

上面是我的图表,我所传递的值是每隔1天30分钟一次:

代码语言:javascript
复制
var data =[{
  "key" : "Price",
  "color" : "#4C73FF",
  "values" : [ [ 1443621600000 , 71.89],
               [ 1443619800000 , 75.51],
               [ 1443618000000 , 68.49],
               [ 1443616200000 , 62.72],
               [ 1443612600000 , 70.39],
               [ 1443610800000 , 59.77]]
}];

对应于以下内容(历代变换器):

代码语言:javascript
复制
9/30/2015, 9:00:00 AM GMT-5:00 DST
9/30/2015, 8:30:00 AM GMT-5:00 DST
9/30/2015, 8:00:00 AM GMT-5:00 DST
9/30/2015, 7:30:00 AM GMT-5:00 DST
9/30/2015, 6:30:00 AM GMT-5:00 DST
9/30/2015, 6:00:00 AM GMT-5:00 DST

如何将图表上日期的格式从显示9/30/2015改为显示9:00

我在他们的文档里找不到任何关于时间或时间的http://nvd3-community.github.io/nvd3/examples/documentation.html#line

指令中的完整代码:

代码语言:javascript
复制
var data =[{
  "key" : "Price",
  "color" : "#4C73FF",
  "values" : [ [ 1443621600000 , 71.89],
               [ 1443619800000 , 75.51],
               [ 1443618000000 , 68.49],
               [ 1443616200000 , 62.72],
               [ 1443612600000 , 70.39],
               [ 1443610800000 , 59.77]]
}];

nv.addGraph(function() {
  var chart = nv.models.linePlusBarChart()
    .margin({top: 30, right: 60, bottom: 50, left: 70})
    .x(function(d,i) { return i })
    .y(function(d) { return d[1] })
    .color(d3.scale.category10().range());

  chart.xAxis
    .showMaxMin(false)
    .tickFormat(function(d) {
      var dx = data[0].values[d] && data[0].values[d][0] || 0;
      return d3.time.format('%x')(new Date(dx))
    });

  chart.y1Axis
    .tickFormat(d3.format(',f'));

  chart.y2Axis
    .tickFormat(function(d) { return '$' + d3.format(',f')(d) });

  chart.bars.forceY([0]);

  d3.select('#chart svg')
    .datum(data)
    .transition().duration(500)
    .call(chart);

  nv.utils.windowResize(chart.update);

  return chart;
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-30 15:12:51

理解nvd3 x轴数据格式刚刚发现了这个问题

帮我找到了这个:https://github.com/mbostock/d3/wiki/Time-Formatting

我现在可以改正更改时间了:

我刚做的timerangeConvertFactory服务

代码语言:javascript
复制
function convertTime(when) {
    switch(when) {
        case 'lh':
        case 'ld':
            return '%I:%M';
            break;
        case 'lw':
        case '1mo':
        case '3mo':
            return '%x';
            break;
        case '1yr':
        case '2yr':
        case 'max':
            return '%m:%y';
            break;
    }
}

现在回到我的指令中:

代码语言:javascript
复制
// Get timespan:
var timeRange = TimeSpanFactory.getTimeSpan();
console.log('timeRange =',timeRange.when);

// Convert timespan to nvd3 format:
var nvd3timeRange = TimespanConvertFactory.convertTime(timeRange.when);
console.log('nvd3timeRange =',nvd3timeRange);

nv.addGraph(function() {
    var chart = nv.models.linePlusBarChart()
        .margin({top: 20, right: 40, bottom: 50, left: 40})
        .x(function(d,i) { return i })
        .y(function(d) { return d[1] })
        .color(d3.scale.category10().range());

    chart.xAxis.tickFormat(function(d) {
        var dx = res[0].values[d] && res[0].values[d][0] || 0;
        return d3.time.format(nvd3timeRange)(new Date(dx))
        // return d3.time.format('%I:%M')(new Date(dx))
        // return d3.time.format('%x')(new Date(dx))
    });
    ....
票数 0
EN

Stack Overflow用户

发布于 2016-03-07 15:26:20

您可以使用

代码语言:javascript
复制
d3.time.format('%H') 

而不是

代码语言:javascript
复制
d3.time.format('%x') 

因为

%x - date,作为"%m/%d/%Y“

在这里您可以找到D3时间格式的所有来源

来源:github

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32869027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档