将MySQL日期时间转换为Javascript Date.UTC格式(对于Highcharts非常有用)

时间:2017-01-05 19:44:48

标签: javascript php mysql datetime highcharts

过去几个小时我一直在用我的解决方案来解决我的Highcharts图表中的一个小问题,所以这是我的解决方案。使用它对你有利。

问题是你不能只使用Highchart脚本中MySQL数据库的时间戳(格式:Ymd H:i:s)作为Javascript Date.UTC以不同的方式计算月份...减去1 1月= 0至12月= 11 * arrggg *

我已经尝试了几种直接在MySQL查询中进行转换的解决方案,但发现这导致了不正确的结果,所以我放弃了这种方法,转而使用基于PHP的小功能:

function format_as_jsDateUTC( $timestamp )
{
    $dt = DateTime::createFromFormat( 'Y-m-d H:i:s', $timestamp ); 
    $ret = $dt->format('Y, '); 
    $ret .= $dt->format('n')-1 == 0 ? 0 : $dt->format('n')-1;  
    $ret .= $dt->format(', j, G, i, s');
    /** 
     * [Y] full numeric representation of a year, 4 digits
     * [n] numeric representation of a month, without leading zero, minus 1 for usage in Javascript (from January = 0 to December = 11)
     * [j] day of the month without leading zeros
     * [G] 24-hour format of an hour without leading zeros
     * [i] minutes with leading zeros
     * [s] seconds with leading zeros
     */  
    return $ret;
}

echo format_as_jsDateUTC( '2017-01-05 09:08:07' );
// results in: 2017, 0, 5, 9, 08, 07

如果有人有任何改进或者确实知道在我的SELECT查询中直接实现这一点的正确方法,那么我总是有兴趣听到,因为我只能从反馈中学习:)

最后但并非最不重要 - 在我的可缩放Highchart样条图的jQuery代码中,我用它作为:

pointStart: Date.UTC(<?php echo format_as_jsDateUTC( $stats['date'] ); ?>)

另请参阅完整的Highcharts代码(在JSFiddle上没有PHP):http://jsfiddle.net/golabs/hfj6mug1/

0 个答案:

没有答案