【问题标题】:Time in x-axis not showing correctly for graph in flot jsflot js中图形的x轴时间未正确显示
【发布时间】:2015-11-26 06:36:00
【问题描述】:

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

2015-10-29 11:35:33

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

这就是它目前的显示方式,

如果您注意到 x 轴,我相信它仅将时间显示为 y 的值都是同一天,同一小时,但以分钟为单位略有不同。请查看下表显示的值(total_bv ) 和日期 (as_of_date)。

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

因为在我从数据库中获取数据的 PHP 脚本中,我使用时区 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);

【问题讨论】:

    标签: php jquery flot


    【解决方案1】:

    看来你有两个问题:

    1. 将数据库中的日期/时间字符串转换为 JavaScript 毫秒时间戳,注意时区。
    2. 为您的刻度值显示某种日期/时间字符串。

    flot.js documentation 解决了这两个问题。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多