CanvasJS文档在X轴上显示奇怪的数据点

时间:2019-02-19 11:26:19

标签: javascript php arrays datetime canvasjs

所以,我一直在看这里的文档: https://canvasjs.com/php-charts/multi-series-area-chart/

它显示了这样的数据点数组:

array("x" => 1451586600000, "y" => 96.709),
array("x" => 1454265000000, "y" => 94.918),
array("x" => 1456770600000, "y" => 95.152),
array("x" => 1459449000000, "y" => 97.070),
array("x" => 1462041000000, "y" => 97.305),
array("x" => 1464719400000, "y" => 89.854),
array("x" => 1467311400000, "y" => 88.158),
array("x" => 1469989800000, "y" => 87.989),
array("x" => 1472668200000, "y" => 86.366),
array("x" => 1475260200000, "y" => 81.650),
array("x" => 1477938600000, "y" => 85.789),
array("x" => 1480530600000, "y" => 83.846),
array("x" => 1483209000000, "y" => 84.927),
array("x" => 1485887400000, "y" => 82.609),
array("x" => 1488306600000, "y" => 81.428),
array("x" => 1490985000000, "y" => 83.259),
array("x" => 1493577000000, "y" => 83.153),
array("x" => 1496255400000, "y" => 84.180),
array("x" => 1498847400000, "y" => 84.840),
array("x" => 1501525800000, "y" => 82.671),
array("x" => 1504204200000, "y" => 87.496),
array("x" => 1506796200000, "y" => 86.007),
array("x" => 1509474600000, "y" => 87.233),
array("x" => 1512066600000, "y"=> 86.276)

然后在代码的JS部分中,它使用以下代码对数据进行格式化:

xValueType: "dateTime",
xValueFormatString: "MMM YYYY",

所以,我的问题是,数组中x键中的这些数字如何转换成像下面这张图中所示的月份? image of the chart in action

而且,我该如何将我的php datetime对象转换为datapoints数组的x变量中的那些数字。

1 个答案:

答案 0 :(得分:1)

CanvasJS是一个JavaScript库,接受数字/ JavaScript日期对象/ JavaScript时间戳作为x值。由于在PHP中具有日期对象,因此首先应使用strtotime将PHP日期时间转换为PHP时间戳。然后,您需要convert it to JavaScript timestamp(将PHP时间戳乘以1000)。

根据documentation,如果要提供时间戳值而不是Date对象,则必须将xValueType显式设置为“ dateTime”。因此,当您将时间戳传递给chart-options并将xValueType设置为“ dateTime”时,库会将其视为日期时间。

注意:在PHP中,时间戳是自1970年1月1日UNIX时代(也称为UNIX时间戳)开始的计算秒数,您将其称为数字。