时间轴yAxis格式,分钟:仅限秒

时间:2013-08-27 10:46:13

标签: highcharts

我希望在几场比赛中划线(划线)游泳比赛时间。

对于系列数据,我使用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)存储在日期时间列类型中。

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

2 个答案:

答案 0 :(得分: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,],
        }]

    }); 

答案 1 :(得分:0)

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

我明白了: 我的时间是格式化hh:mm:mysql中的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]";

也许有更干净的方式?但我现在可以将$数据提供给Highcharts,它可以很好地工作。

感谢。