【问题标题】:ChartJS sees date in string as numbersChartJS 将字符串中的日期视为数字
【发布时间】:2018-02-08 19:18:43
【问题描述】:

我正在尝试从 csv 文件中获取一些字符串,以放在来自 chartjs 的图表下。

我写了这个php函数:

function getTitle($id) {
 $stations = fopen("stations.csv", 'r');
 //$csv_data = fopen(date("G") . '.csv', 'r');
 $csv_data = fopen('16.csv', 'r'); //fopen("/mnt/weather-data/" . 
 date("Y/m/d/G") . ".csv", 'r');
 $data = array();
 $DAY_LENGTH = 60 * 60;
 $currentDate = date('U');

while (($line = fgetcsv($csv_data)) !== FALSE) {
    $date = date('U', strtotime($line[1]));
    if ($date >= ($currentDate-$DAY_LENGTH) && $line[2] == $id) {
        array_push($data, $line[0]);
    }
}

for ($i = 0; $i < count($data); $i++) {
    echo $data[$i] . ",";
}
fclose($stations);
fclose($csv_data);
}

工作正常,在我调用此函数的任何地方,它都会打印所需的字符串,即日期,例如 2018-02-08。

当我尝试在 ChartJS 中需要它们的标签部分调用此函数时。它将此日期作为总和返回,因此 2018-02-08 将返回为 2008。

labels: [<?php getTitle(($_GET['id']))?>],

我做错了什么?

当我尝试将 $line[0] 更改为 $line[1] 时出现另一个问题,这是一个具有以下格式的时间:20:17:36,我的整个应用程序停止工作..

希望有人能帮助我!!

【问题讨论】:

    标签: javascript php chart.js chartjs-2.6.0


    【解决方案1】:

    您的代码的问题是 echo 只会输出变量的内容,但是当您将其值解析为 javascript 数组时,您需要用引号将您的值括起来。所以如果你改变了

    for ($i = 0; $i < count($data); $i++) {
        echo $data[$i] . ",";
    }
    

    进入

    for ($i = 0; $i < count($data); $i++) {
        echo "'" . $data[$i] . "',";
    }
    

    它应该工作。这也将解决您的其他问题。因此,通过此更改,您还应该能够使用时间。

    【讨论】:

    • 非常感谢,一直在苦苦挣扎,但这有帮助!再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 2023-04-05
    • 2014-03-15
    相关资源
    最近更新 更多