D3.js: time.scale.utc () seems to be doing nothing for me?

I am trying to use d3.time.scale.utc()to create a timeline that is the same on any device, as mentioned in the docs .

However, both of the following scales seem to generate tick dates that are locally formatted - in my case, the returned dates use BST and GMT:

var start = new Date("Mon Oct 21 2013 00:00:00 GMT+0000 (BST)");
var end = new Date("Mon Dec 02 2013 00:00:00 GMT+0000 (GMT)")

var x = d3.time.scale.utc()
    .domain([start, end])
    .range([0, 800])
    .ticks(d3.time.mondays, 1);
console.log(x);

var y = d3.time.scale()
    .domain([start, end])
    .range([0, 800])
    .ticks(d3.time.mondays, 1);
console.log(y);

How can I ask D3 to generate tick dates that are not set in the local time zone?

Spell here: http://jsfiddle.net/qE9ur/

+3
source share
1 answer

, , , .

d3.time.scale.utc() . Javascript 1970 .

UTC, tickFormat, UTC . , !

, :
http://jsfiddle.net/qE9ur/1/

var start = new Date("Mon Oct 21 2013 00:00:00 GMT+0100 (BST)");
var end = new Date("Mon Dec 02 2013 00:00:00 GMT+0000 (GMT)")

var xScale = d3.time.scale.utc()
    .domain([start, end])
    .range([0, 800]);
var xTicks =  xScale.ticks(d3.time.mondays, 1);

console.log( xTicks.map( xScale.tickFormat() ) );

var yScale = d3.time.scale()
    .domain([start, end])
    .range([0, 800]);
var yTicks = yScale.ticks(d3.time.mondays, 1);

console.log(yTicks.map( yScale.tickFormat() ) );

( GMT). : , . mondays, , 6 7 UTC.

UTC .

var xTicks =  xScale.ticks(d3.time.mondays.utc, 1);

UTC: http://jsfiddle.net/qE9ur/2/

, , , , tick. + , .

+10

All Articles