こんにちは、データを収集するシステムを構築しています。データを mysql データベースに保存し、amCharts を使用して表示します。時間の経過に伴うデータの変化を表示するアーカイブ チャートを作成しています。php と josn を使用した mysql タイムスタンプ配列と javascript 日付配列の間の変換に問題があります。
mysql クエリは次のようになります。
SELECT
UNIX_TIMESTAMP( data ) AS data,ROUND(AVG(CurrentA),3),ROUND(AVG(CurrentB),3),ROUND(AVG(CurrentC),3)
FROM
Danni
WHERE
data
BETWEEN
'2013-07-13 00:00:00'
AND
'2013-07-16 00:00:00'
GROUP BY
FLOOR(UNIX_TIMESTAMP(data)/72)
LIMIT 40
返されるデータは、次の php コードによってフォーマットされます。
$data = array();
while ($row = mysql_fetch_array($ustroistvo)){
$data['date'][] = $row['0'];
$data['CurrentA'][] = $row['1'];
$data['CurrentB'][] = $row['2'];
$data['CurrentC'][] = $row['3'];
}
echo json_encode($data);
exit();
したがって、最終結果は
{"date":["1373748170","1373748192","1373748264","1373748336","1373748408","1373748480","1373748553","1373748624","1373748696","1373796506","1373796577","1373796648","1373796720","1373796792","1373796864","1373796936","1373797008"],"CurrentA":["45.667","37.794","37.508","35.815","31.238","33.061","32.937","35.385","36.020","31.852","34.047","34.508","30.672","37.292","32.554","39.262","32.314"],"CurrentB":["39.000","36.921","33.769","35.123","36.492","41.576","42.492","34.862","36.041","34.967","37.062","33.108","35.531","34.262","33.385","35.877","35.941"],"CurrentC":["35.000","32.429","35.862","36.785","34.873","36.894","31.921","36.938","33.714","40.541","28.688","34.308","33.266","39.846","35.708","34.908","32.118"]}
したがって、日付オブジェクトを実際のJavaScript日付に変換するには、次を使用します。
success: function (data) {
console.log(data.date);
data.date=new Date(data.date*1000);
console.log(data.date);
chart.dataProvider=data;
chart.validateData();
}
問題はここにあり、無効な日付が表示されます。配列data.date=new Date(data.date*1000)
が原因だと思います。日付配列を返すdata.date
ように適切にフォーマットする方法がわかりません。data.date=new Date(data.date*1000)