代码之家  ›  专栏  ›  技术社区  ›  NekoLopez

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

  •  0
  • NekoLopez  · 技术社区  · 6 年前

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

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

    enter image description here

    我检查了时间戳,例如,这是2014年1月1日的时间戳:138853440000(已经乘以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 回复  |  直到 6 年前
        1
  •  2
  •   Syntactic Fructose    6 年前

    这可能是因为javascript Date 对象使用本地时区。记住,138853440000在任何时区都是十二月<UTC默认值。

    我通常不喜欢推荐库作为有效的答案,但带有默认JS Date对象的时区真的很糟糕。 https://momentjs.com/ 如果你正在寻找环球时报,这是一个很好的选择。

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