我的图表从服务器获取数据,时间服务器* 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]]
答案 0 :(得分:0)
您的屏幕截图链接似乎已损坏,但我记得问题是这些值应该与一天的开头对齐,但是显示偏移了几个小时。
问题是Flot需要UTC时间戳,而你的时间戳是偏移的。例如,1370710800000实际上是2013年6月8日格林尼治标准时间17:00。通过添加25M - 1370735800000 - 变为23:56:40,这足够接近它似乎排列到日边界。你真正想要添加的是7(小时)* 3600(秒)* 1000(毫秒)= 25200000,它补偿了我所假设的美国太平洋时间GMT-7的当地时区偏移。