2016-06-26 125 views
2

我现在正在努力解决时间问题。Nvd3图表不同时区

我使用NVD3库创建我的图表,我计算所有图表数据在服务器端

问题是图表上的时间范围是根据我的电脑时间(GMT + 3)和而不是我的机器(UTC)。我如何获取它是UTC而不是GMT + 3?

我该怎么办?

我加入我的代码,如果它可以帮助

nv.addGraph(function() { 
var chart = nv.models.lineWithFocusChart().x(function(d) {return d[0];}).y(function(d) { return d[1]; }); 
chart.yAxis 
.tickFormat(d3.format(',.2f')); 

chart.y2Axis 
.tickFormat(d3.format(',.2f')); 

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

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

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

return chart; 
+0

服务器是以CMT + 3还是以UTC生成图形数据? –

+0

服务器生成它在UTC和客户端在UTC + 02:00 –

+0

但问题是项目应同时在不同时区工作 –

回答

1

找到了解决办法!

var now =new Date(); 
chart.xAxis.tickFormat(function(d) { if (d!= undefined) 
    { 
    return d3.time.format('%H:%M')(new Date(d+ now.getTimezoneOffset() *    60000 +Number(timeZoneOffset))) } 
});