过去几个小时我一直在用我的解决方案来解决我的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/