我有一个动态的Flot图,在x轴上有日期,在y轴上有数字。为了使Flot插件正确读取日期对象,我不得不将日期转换为刻度(使用getTime())。我的问题是我无法在图表的工具提示悬停中将刻度线恢复到正常日期。


我试着用这个来扭转它:

dateTimeObject = new Date((jsTicks - 621355968000000000) / 10000);


无论jsTicks是什么,我得到的都是“ Jan 02 0001 hh:mm:ss(几乎当前时间)”

我究竟做错了什么?

最佳答案

这在某种程度上取决于创建数据时是否考虑了浏览器的时区。在plotclickplothover事件中处理此问题的简单方法如下:

$("#placeholder").bind("plotclick", function(event, pos, item) {
    var x = item.datapoint[0],
    y = item.datapoint[1].toFixed(2);
    var dt = new Date(x);
    var label = 'At '+dt.toLocaleTimeString()+' ';
    //now display this label
}


如果您要考虑数据中的时区,则需要一个看起来更像这样的时区:

$("#placeholder").bind("plotclick", function(event, pos, item) {
    var x = item.datapoint[0],
    y = item.datapoint[1].toFixed(2);
    var userTZ = new Date();
    userTZ = userTZ.getTimezoneOffset()*60*1000;
    var dt = new Date(x+userTZ);
    var label = 'At '+dt.toLocaleTimeString()+' ';
    //now display this label
}


具有时区的示例:http://jsfiddle.net/ryleyb/utNaJ/

关于javascript - 在Flot jQuery-plugin问题中将javascript刻度转换为日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12425220/

10-12 12:20
查看更多