对于flot js中的图形,x轴的时间没有正确显示

时间:2015-11-04 10:01:07

标签: php jquery flot

我使用flot js绘制图表。现在存储在数据库中的日期是这种形式。

2015-10-29 11:35:33

我将它转换为毫秒,传递给ajax绘制图形,该图形应该在x轴上显示日期,而不是以毫秒为单位,但是在可读日期。

这就是它现在的表现方式, enter image description here

如果您注意到x轴,我相信它只显示时间,因为y的值全部是同一天,同一小时但是在几分钟内略有差异。请看下面的表格显示值(total_bv) )和日期(as_of_date)。

enter image description here

问题是,日期显示在x轴上的日期。什么是03:3,03:38等等。我认为它的时间没有转换为正确的时区?

因为在我从数据库获取数据的PHP脚本中,我使用timezone asia / kuala lumpur。如果我不使用这个时区,x轴显示的时间从10:36,10:38开始等等。所以任何人都可以先告诉我如何显示正确的日期&时间在x轴上的可读格式?

date_default_timezone_set("Asia/Kuala_Lumpur");
$acceptedUser = new search();
$sales = $acceptedUser->get_sales_graph();
$before = array();
foreach($sales as $k=>$v)
{
    $date = strtotime($v['as_of_date']) * 1000;
    array_push($before, array("datey" => $date, "bv" => $v['total_bv']));
}
echo json_encode($before);

1 个答案:

答案 0 :(得分:0)

所以看起来你有两个问题:

  1. 将数据库中的日期/时间字符串转换为JavaScript毫秒时间戳,注意时区。
  2. 显示刻度值的某种日期/时间字符串。
  3. flot.js documentation解决了这两个问题。

    首先,flot假定时间戳是UTC。如果要更改它,可以通过将轴“timezone属性设置为browser(根据用户的浏览器转换时间戳)来实现,或者可以使用timezone.js。然而,大多数开发人员只是假装他们正在使用的时间戳已经在正确的时区(这基本上就是你正在做的并且已经注意到了)。

    其次,使用带有轴标记的timeformat属性的显式格式字符串。该文档包含可替换格式说明符的完整列表。