dqgg25493 2013-07-19 07:13
浏览 53
已采纳

使用php和json将mysql timestamp数组转换为javascript日期数组

Hi there I am building a system that collect data. I store the data in mysql database and display it using amCharts. I making archive chart that displays change in the data over time. I have problems with conversion between mysql timestamp array and javascript date array using php and josn.

The mysql query goes like this:

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

The returned data is formated by this php code:

$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();

So the end result is

{"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"]}

So to convert the date object to actual javascript date I use:

success: function (data) {
  console.log(data.date);
  data.date=new Date(data.date*1000);
  console.log(data.date);
  chart.dataProvider=data;
  chart.validateData();
}

The problem lies here data.date=new Date(data.date*1000) gives me invalid date and I think it is because data.date is array. I do not know how to format it properly so that data.date=new Date(data.date*1000) returns date array.

  • 写回答

1条回答 默认 最新

  • duanchun2349 2013-07-19 07:17
    关注

    Simply

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

    Also, it's common to write array names in plural, to improve readability and avoid extra confusion. Rename the date field to dates.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址