You are looking for this example: http://bl.ocks.org/mbostock/4149176
A working example for your case: http://bl.ocks.org/musically-ut/7699650
Code from Example
function timeFormat(formats) { return function(date) { var i = formats.length - 1, f = formats[i]; while (!f[1](date)) f = formats[--i]; return d3.functor(f[0])(date); }; } var customTimeFormat = timeFormat([ [d3.time.format("%Y"), function() { return true; }], [d3.time.format("%B"), function(d) { return d.getMonth(); }], [d3.time.format("%b %d"), function(d) { return d.getDate() != 1; }], [d3.time.format("%a %d"), function(d) { return d.getDay() && d.getDate() != 1; }], [d3.time.format("%I %p"), function(d) { return d.getHours(); }], [d3.time.format("%I:%M"), function(d) { return d.getMinutes(); }], [d3.time.format(":%S"), function(d) { return d.getSeconds(); }], [d3.time.format(".%L"), function(d) { return d.getMilliseconds(); }] ]); var xAxis = d3.svg.axis() .scale(x)
In your case, you need something like this:
var customTimeFormat = timeFormat([ ["00:00", function () { return true; }], ["06:00", function (d) { return 3 <= d.getHours() && d.getHours() < 9; }], ["12:00", function (d) { return 9 <= d.getHours() && d.getHours() < 15; }], ["18:00", function (d) { return 15 <= d.getHours() && d.getHours() < 21; }] ]);
source share