0

こんにちは、データを収集するシステムを構築しています。データを 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)

4

1 に答える 1

1

単に

 data.date = data.date.map(function(d) { return new Date(d * 1000) })

また、読みやすさを向上させ、余分な混乱を避けるために、配列名を複数形で書くのが一般的です。dateフィールドの名前を に変更しdatesます。

于 2013-07-19T07:17:03.833 に答える