jquery flot,graph point not place correct

时间:2013-06-25 09:06:44

标签: ruby-on-rails jquery-plugins flot

我的图表从服务器获取数据,时间服务器* 1000转换为时间js。在这里我的图表

http://awesomescreenshot.com/03f1ft5k72

点与列日不匹配。我必须为每个值+ 25 000 000显示它匹配列日。为什么会这样,我是flot的新手。你能和我分享你的经历吗?

var d_register = #{ @total.map{ |t| [t.date.to_time.to_i * 1000 , t.register] } };
// must add 25 000 000 to it for correct position point.
// var d_register = #{ @total.map{ |t| [t.date.to_time.to_i * 1000 + 25000000, t.register] } };
var curr = new Date(#{Date.current.to_time.to_i * 1000}); // get current date
define_flot();

function define_flot(){
        var first = new Date(curr.getTime() - curr.getDay() * 24 * 60 * 60 * 1000);
        var last = new Date(first.getTime() + 7 * 24 * 60 * 60 * 1000);
        $(".week-time").text(
          (first.getMonth() + 1) + '/' +
          first.getDate() + '/' +
          first.getFullYear() + ' - ' +

          (last.getMonth() + 1) + '/' +
          last.getDate() + '/' +
          last.getFullYear()  );

        var first_day_in_week = first.getTime();
        var last_day_in_week = last.getTime();
        $.plot("#placeholder", [ d_register ], {
            yaxis: {
                    tickDecimals: 0
            },
            xaxis: {
                    mode: "time",
                    minTickSize: [1, "day"],
                    min: first_day_in_week,
                    max: last_day_in_week,
                    timeformat: "%a"
            }
        });
    }

data_register:

[[1370710800000,1],[1370797200000,7],[1370883600000,1],[1371056400000,0],[1371142800000,0],[1371747600000,0],[1371834000000,0],[1371920400000,0 ],[1372006800000,0],[1372093200000,0],[1372179600000,0]]

+ 25000000之后的data_register:

[[1370735800000,1],[1370822200000,7],[1370908600000,1],[1371081400000,0],[1371167800000,0],[1371772600000,0],[1371859000000,0],[1371945400000,0 ],[1372031800000,0],[1372118200000,0],[1372204600000,0]]

1 个答案:

答案 0 :(得分:0)

您的屏幕截图链接似乎已损坏,但我记得问题是这些值应该与一天的开头对齐,但是显示偏移了几个小时。

问题是Flot需要UTC时间戳,而你的时间戳是偏移的。例如,1370710800000实际上是2013年6月8日格林尼治标准时间17:00。通过添加25M - 1370735800000 - 变为23:56:40,这足够接近它似乎排列到日边界。你真正想要添加的是7(小时)* 3600(秒)* 1000(毫秒)= 25200000,它补偿了我所假设的美国太平洋时间GMT-7的当地时区偏移。