我想从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)格式,并将其显示在轴标签上?
答案 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中处理多个系列。