在Flot图表行工具提示中显示信息时出错

时间:2018-03-28 19:33:57

标签: javascript jquery flot

我有一个带有工具提示的图表行,使用Flot插件通过AJAX从mysql数据库获取数据。

我在一段时间内建立了图表线,但问题是,例如,当我从2014年1月(2014年1月)到2014年12月(2014年12月)选择某个日期时,图表显示我正确值,但工具提示中的日期不正确(12/2013),如下所示:

enter image description here

我检查了时间戳,例如,这是2014年1月1日的时间戳:1388534400000(它已经乘以1000)。

所以我显示这样的信息:

$("#graph").bind("plothover", function (event, pos, item) {

    if (item) {
        var x = item.datapoint[0],
        y = item.datapoint[1];

        var date = new Date(x); //1388534400000 = 2014-01-01
        var amount = $.number(y,2);

        $("#tooltip").html("<b>"+item.series.label+"</b>"+"<br>Fecha: " + ('0' + (date.getMonth()+1)).slice(-2) + '/'+ date.getFullYear()+ " | Amount: S/ "+amount).css({top: item.pageY+5, left: item.pageX+5}).fadeIn(200);                   
        } else {
            $("#tooltip").hide();
        }

    });

但它仍然在一个月前出现:

enter image description here

序列在一个月前继续,但 xaxis 的月份是正确的。

我该如何解决?我想要一些帮助。

1 个答案:

答案 0 :(得分:2)

这可能是因为使用您当地时区的javascript Date对象。请记住,1388534400000在任何时区都是12月&lt; UTC默认值。

我通常不喜欢推荐库作为有效答案,但是使用默认JS Date对象的时区真的太糟糕了。如果您正在寻找世界时,https://momentjs.com/是一个不错的选择。

编辑:实际上,您可以致电getUTCMonth() + 1以返回正确的月份