2016-09-19 66 views
0

我已經看到類似於這個的其他問題,但我的是一個獨特的案例。d3 - 在24小時制時間格式化一個整數

我從一個模擬器繪製點,每隔9秒收集數據24小時。這將返回一個包含9600個值的數組。

目前,我通過將數組索引轉換爲0到24之間的整數(0.0025(9/60/60 == 0.0025))來顯示整數。所以9600 * .0025 == 24.

但是,我希望能夠顯示半小時和四分之一小時,因此上午1:15會顯示爲1:15,並且下午3:30會顯示截至15:30。

我該怎麼做?

回答

2

如果我理解正確,在午夜設置基準日期然後添加到它可能會更容易,因此您可以使用d3.time.format,下面的某種形式。

var i = 4800 
var date = new Date(); 
date.setHours(0,0,0,0); //set date to midnight 

var format = d3.time.format("%H:%M %p") //format to Hour Minutes 
date.setSeconds(date.getSeconds() + (9 * i)); //9*4800 for Noon 

alert(format(date)) //Alerts 12 P.M. 

然後用剔格式爲中軸線,每刻鐘,它類似於下面

d3.svg.axis() 
    .scale(x) 
    .orient("bottom") 
    .ticks(d3.time.minutes, 15) 
    .tickFormat(d3.time.format("%H:%M")); 
0

如果有人有一個整數範圍,並希望在這裏展示的蜱時,用它們作爲小時v4的解決方案:

var yScale = d3.scaleLinear() 
    .domain(timeExtent) // [6, 20] from 06:00 to 20:00 
    .range([0, height - cellHeight]); 

var yAxis = d3.axisLeft(yScale) 
    .tickFormat(function (hour) { 
     var now = new Date(); 
     now.setHours(hour, 0, 0, 0); 
     return d3.timeFormat("%H:%M")(now); 
    }); 
相關問題