【问题标题】:Convert javascript ticks to date in Flot jQuery-plugin issue在 Flot jQuery-plugin 问题中将 javascript 刻度转换为日期
【发布时间】:2012-09-14 13:06:52
【问题描述】:

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

我试图用这个来扭转它:

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

无论 jsTicks 是什么,我得到的只是“Jan 02 0001 hh:mm:ss (almost current time)”

我做错了什么?

【问题讨论】:

    标签: javascript jquery datetime flot


    【解决方案1】:

    这在一定程度上取决于您在创建数据时是否考虑了浏览器的时区。在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/

    【讨论】:

    • 太棒了!此外,如果您只想要日期而不是时间,只需将 dt.LocaleTimeString() 替换为 dt.toLocaleDateString()
    猜你喜欢
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2010-12-02
    相关资源
    最近更新 更多