2016-04-21 11 views
2

Ich habe es geschafft, Daten in d3/nvd3 Diagrammen angezeigt werden, die ich wie dieser vergänglichen einen Wert von Millisekunden tat:nvd3 - Format Millisekunden h: m: s in Diagramm (Zeit nicht Datum)

chart.xAxis 
    .tickFormat(function(d) { 
     return d3.time.format('%e, %H:%M')(new Date(d)) 
}); 

Ich möchte die Millisekunden als Zeitabschnitt auf der y-Achse anzeigen, wie "6 h: 23 min: 5 sec".

Ist das möglich?

Vielen Dank im Voraus!

Muff

Antwort

2

Versuchen Sie, diese

d3.time.format('%H h : %M min : %S sec')(new Date())

wird das Datumsformat wie dieses

05 h: 34 min: 26 sec

Oder, wenn Sie don‘ t wie die 0 Polsterung für Stunden tun

d3.time.format('%-H h : %M min : %S sec')(new Date())

es wird das Datumsformat wie dieses

5 h: 37 min: 54 sec

EDIT

in einem solchen Fall müssen Sie ein setzen wenn der Block den Scheck und senden Sie das gewünschte Format, so etwas zu tun:

.tickFormat(function(d) { 
     var date = new Date(d); 
     if (date.getHours() == 0){ 
     return d3.time.format('%M min : %S sec')(d) 
     } else { 
     return d3.time.format('%-H h : %M min : %S sec')(d) 
     } 

} 
+1

Dies funktioniert mit einem Nachteil: Wenn ich eine Periode habe, die unter einer Stunde wie z. 21258 Millisekunden wird zu "1 h: 00 min: 21 sec" konvertiert. Gibt es eine Möglichkeit, "h" und "min" nur anzuzeigen, wenn es einen Wert für sie gibt? – Raggamuffin

+0

Überprüfen Sie meine Edit-Sektion das sollte es nageln :) – Cyril

+0

Mh tut mir leid, wenn ich dies verwende, bekomme ich den Fehler: 'TypeError: d.getHours ist keine Funktion bei d3_time_formats.H (d3js_d3.js? Hash = 54da9a2 ...: 2643) '. Irgendeine Ahnung? – Raggamuffin

Verwandte Themen