使用Flot jQuery插件显示带有正确时区的工具提示

问题描述

| 在图形中显示xaxis标签时,Flot插件存在一些问题。他们是
\'mode: \"time\"\'
。当前,我将Flot与工具提示功能一起使用,并且工具提示包含日期和时间。 我向包含时间戳的插件提供JSON。之后,我将转换时间戳并将其显示在工具提示中。问题在于,在图形中显示数据时,由于时区之间的差异,工具提示中的时间与插件生成的xaxis标签不对应。我的JSON时间戳为+2 GMT,但Flot中的xaxis标签为+0 GMT。所以我想知道是否有可能设置时区或类似的偏移量。 我的JSON(由AJAX生成
 [1300087800000,29],[1300088700000,39],[1300089600000,46],[1300090500000,53],[1300091400000,68],[1300092300000,95],...
我的工具提示功能
$(placeholder).bind(\"plothover\",function (event,pos,item) {
     $(\"#tooltip\").remove();

     var x = item.datapoint[0].toFixed(2);
     var y = item.datapoint[1].toFixed(2);

     var currDate   = new Date(Math.floor(x));
     var hour       = currDate.getHours();
     var minute     = String(\"\") + currDate.getMinutes();

     var tooltip = hour + \":\" +
                   ((minute.length < 2) ? \"0\" + minute : minute) + \" \" +
                   (Math.round(y * 100)/100) + \"Wh\"
     showTooltip(item.pageX,item.pageY,tooltip);
 });  
浮选选项
 var plotOptions = {  
     lines:  { show: true,linewidth: 1 },points: { show: false,symbol: \"cross\" },xaxis:  {  
         mode:   \"time\",tickLength: 5,timeZoneOffset: (new Date()).getTimezoneOffset()  
     },selection: { mode: \"x\",color: \"#BCBCBC\" },grid:      { hoverable: true,clickable: false }
};
但是不幸的是
timeZoneOffset
不起作用,而且xaxis和工具提示之间仍然存在差异。 您有什么想法应该解决我的问题吗?     

解决方法

您可以尝试使用时区而不是timeZoneOffset。您的选择如下所示:
var plotOptions = {  
     lines:  { show: true,lineWidth: 1 },points: { show: false,symbol: \"cross\" },xaxis:  {  
          mode:   \"time\",tickLength: 5,timezone: \"browser\" // \"browser\" for local to the client or timezone for timezone-js  
          },selection: { mode: \"x\",color: \"#BCBCBC\" },grid:      { hoverable: true,clickable: false }
    };
我的flot版本是0.7     ,如果查看flot问题数据库,则问题141会涉及时区。提示您使用的语法的问题484已合并到此问题中。 该文件说:   通常,您希望根据   特定时区,通常是数据所在的时区   生产的。但是,Flot始终根据UTC显示时间戳。   作为核心Java脚本的唯一替代方法是解释   根据访问者所在时区的时间戳,   这意味着滴答声将随时区发生不可预测的变化   以及每个访客的夏令时。 因此,鉴于在以下地区对自定义时区没有很好的支持 使用Javascript,您必须照顾好这个服务器端。 因此,正确的解决方案是使您的数据看起来像UTC服务器端(即使不是)。如果您无法更改数据源,则可能需要考虑代理它。服务器端语言应允许时区操作。 或者,按照问题141进行操作,并注意修补程序或插件。     ,对于UTC时间戳记,请使用UTC时间函数:
var hour = currDate.getUTCHours();  // instead of getHours()
var minute = String(\"\") + currDate.getUTCMinutes(); // instead of getMinutes()
并删除xaxis时区。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...