2013-04-04 59 views
5

我一直无法理解为什么工具提示日期已关闭一天。我相信X轴是正确的,我一直在玩它,但这是在杀死我。浮动图表工具提示错误 - 工具提示日期是X轴背后的一天日期

我该如何解决这个问题?

我从一个URL端点传入一个JSON到变量jsonDataUrl。这里是一个示例数据点:[{date: "2013-01-01", value: 50}]

而cssSelector只是占位符。

这里是我的代码:

$.getJSON(jsonDataUrl, function(res) { 
    var data = []; 
    $.each(res, function(i, entry){ 
     data.push([new Date(entry["date"]), entry["value"]]); 
    }); 

    var opts = { yaxis: { min: 0}, 
       xaxis: { mode: "time", timeformat: "%m-%d"}, 

       series: { lines: { show: true }, points: { show: true } }, 

       grid: {hoverable: true, clickable: true} 
    }; 

    $.plot($(cssSelector), [data], opts); 

    $(cssSelector).bind("plotclick", function(event, pos, item) { 
     if (item) { 

      var x = parseInt(item.datapoint[0]), 
       y = item.datapoint[1]; 
      var date = (new Date(x)); 
      var day = date.getDate(); 
      var month = date.getMonth() + 1; 
      var formattedDate = month + "-" + day; 

      $("#tooltip").remove(); 
      var label = "date: " + formattedDate + "<br/> count: " + y; 
      showTooltip(item.pageX, item.pageY, label); 
     } 
    }); 
    }); 

回答

4

我希望这是确定的,但我想回答我的问题。我很高兴我发现了这个愚蠢的错误!我使用Ruby on Rails来收集数据并通过JSON url将它传递给Flot Chart。由于服务器在午夜UTC记录数据,因此它将数据传递给本地时区的工具提示,从而使其完全不同步。因此,我基本上将date.getDate()和date.getMonth()更改为date.getUTCDate()和date.getUTCMonth()。

+2

是的,回答你自己的问题是非常可以接受的!当系统让你请回来,并接受你的答案是正确的(点击复选标记)。这样问题就会被关闭。 – Mark 2013-04-05 19:09:47