将时间格式数据显示为高级图表

时间:2016-04-19 10:37:33

标签: javascript php mysql

我想从MySQL TIME(3)格式绘制一些时间数据,所以hh:mm:ss.fff到Highcharts。

现在我只需转换成第二个就可以显示它:

  

$ sql =“选择TIME_TO_SEC(time_format(TIMEZERO,'%H%:%i:%s。%f'))为   TIMEZERO,TIME_TO_SEC(time_format(TS,'%H%:%i:%s。%f'))作为TS FROM   timezero ORDER BY TS“;

使用如下所示的JSON文件:

  

[[ “45130”, “0”],[ “45130”, “0”],[ “45130”, “0”]]

但如果我不转换为秒,则它们会成为文本字符串:

  

$ sql =“select(time_format(TIMEZERO,'%H%:%i:%s。%f'))为TIMEZERO,   (time_format(TS,'%H%:%i:%s。%f'))为TS FROM timezero ORDER BY TS“;

JSON输出:

  

[[ “12:32:10.274000”, “00:00:00.000000”],[ “12:32:10.281000”, “00:00:00.000000”],[ “12:32:10.289000”,” 00:00:00.000000" ]]

有没有办法保存数据库中存储的原始数据的TIME(3)格式,并将其显示在轴标签上?

2 个答案:

答案 0 :(得分:0)

我完全不明白你的问题,但如果你想以自定义格式获取日期,只需从db获取原始日期并将其转换为你想要的任何日期格式。对于前者date(“d-m-Y H:i”,strtotime($ rawDateFromDB));

答案 1 :(得分:0)

其实我找到了一种方法: 我从MySQL数据库中获取时间字符串,而不是使用explode函数将PHP文件解析为秒:

        $TIME = ($row['TIME']);
        $SIGN = substr($row['TIME'],0,1);
        $explode = explode(':', $TIME);
        if (ctype_digit($SIGN)) {$TIME = +1 * (abs($explode[0]) * 3600 + $explode[1] * 60 + $explode[2]);}
        else                    {$TIME = -1 * (abs($explode[0]) * 3600 + $explode[1] * 60 + $explode[2]);}
        $TS    = (strtotime($row['TS'])*1000);
        $data[] = array($TS, $TIME);

我可以使用十进制数字绘制带有负值和正值的解析数据: 比使用

将人类可读格式解析回HH:MM:SS:F到轴属性中
      yAxis: {
    labels: {                
        formatter: function () {
      h = Math.floor(this.value / (60*60));
      m = Math.floor(this.value / 60);
      s = Math.floor(this.value % 60);
      s = s % 60;
      m = m % 60;
      h = h % 24;
      if (h < 9) h = "0" + h;
      if (m < 9) m = "0" + m;
      if (s < 9) s = "0" + s;
      return  [h, m, s].join(':');
        }
    }
},

现在,我必须找到一种方法,通过Ajax调用从导入的JSON中处理多个系列。