1

我想绘制(线)游泳运动员在几次比赛中的比赛时间。

对于系列数据,我使用 php 代码:

$datetime1=date('Y, m, d', strtotime($performances['PERF_DATE']."-1 month")); 
$datetime2='Date.UTC('.$datetime1.')';
$chrono=strtotime($performances['PERF_DATE']);
$data[] = "[$datetime2, $chrono]";

xAxis 时间线适用于游泳比赛日期:

xAxis: {
        type: 'datetime',
        dateTimeLabelFormats: { 
        day: '%d/%m/%Y'}

yAxis 时间线用于比赛时间:

yAxis: {
         title : { text :'chronos'},
         type: 'datetime', //y-axis will be in milliseconds
         dateTimeLabelFormats: { //force all formats to be minute:second
         second: '%M:%S',
         minute: '%M:%S'
            },
            min: 0
             }

xAxis 时间线完美运行。但我的 yAxis 存在格式问题:我无法以 mm:ss 格式显示时间。

我正在使用 mysql 5.6.4 并且比赛时间 (PERF_TIME) 存储在类型 time(2) 列中,即包括 2 分之一秒。比赛日期 (PERF_DATE) 存储在类型 datetime 列中。

例如,php 生成的表中的 $performances['PERF_DATE'] 将显示:00:01:33.91。但是在 Highcharts 中,yAxis 上的值将是 16.Jan,而在绘图标签上它将显示值 1371333600。我猜这些是微秒。我假设我需要在 $chrono=strtotime($performances['PERF_DATE']); 上应用正确的时间格式函数 有人可以帮我弄这个吗 ?非常感谢。

4

2 回答 2

1

你能展示你的data输出吗?对我来说它工作正常,请参阅:http: //jsfiddle.net/Fusher/pQ5EC/12/确保您的 y 值也是以毫秒为单位的时间戳。

    $('#container').highcharts({

        chart: {
            type: 'column'
        },

        xAxis: {
            type: 'datetime'
        },

        yAxis: {
            type: 'datetime'
        },


        series: [{
            name: 'Temperatures',
            pointStart: new Date().getTime(),
            pointInterval: 24 * 3600 * 1000, 
            data: [1.5 * 60 * 1000,1.2 * 60 * 1000,2.5 * 60 * 1000,1.9 * 60 * 1000,],
        }]

    }); 
于 2013-08-27T11:35:17.937 回答
0

抱歉,我之前确实回复了,但系统没有保存我的答案 --- 显然有一个 8 小时的停电期,作者无法回答他自己的问题。

我想通了:我的时间在 mysql 中格式化为 hh:mm:ss.00。我认为有一个函数可以轻松地将 mysql 时间格式转换为毫秒格式,但显然没有。因此,我使用以下代码手动将时间“分解”为毫秒:

extract($performances); 
 //converts date from 2012-01-10 (mysql date format) to the format Highcharts understands 2012, 1, 10
$datetime1=date('Y, m, d', strtotime($performances['PERF_DATE']."-1 month"));

//getting the date into the required format for pushing the Data into the Series
$datetime2='Date.UTC('.$datetime1.')'; 

// value is in format hh:mm:ss.00
$chrono1=$performances['PERF_TIME']; 

// explodes value in mn, sec and microseconds
sscanf($chrono1,"%d:%d:%d.%d",$hours,$minutes,$seconds,$milliseconds);

// calculate total of milliseconds
$chrono=$seconds * 1000 + $minutes * 60 * 1000 + $milliseconds * 10;

$data[] = "[$datetime2, $chrono]";

也许有更清洁的方法?但是我现在可以将 $data 提供给 Highcharts 并且它运行良好。

谢谢。

于 2013-08-28T21:33:04.387 回答