【问题标题】:MySQL TimeStamp To Date/Time PHP: always 1/1/1 01:00MySQL 时间戳到日期/时间 PHP:总是 1/1/1 01:00
【发布时间】:2013-06-04 15:46:17
【问题描述】:

我必须创建一个包含每行日期/时间的数组。 我正在使用以下代码。 “TIME_STAMP”是包含 MySQL 时间戳的字段(默认为 CURRENT_TIMESTAMP)。

while ( $row = mysql_fetch_array($result) )
{
    $timestamp = strtotime($row["TIME_STAMP"]);
    $x[] = sprintf("%s, %s", date ('j/n', $timestamp), date('H:i', $timestamp));
}

如果我从 mysql 客户端进行 SELECT * 一切正常:TIME STAMP 是正确的:

2013-06-04 17:11:43

但是当我将这个数组传递给 JpGraph(制作水平轴)时,所有记录都显示为

1/1 01:00

图表代码:

$graph = new Graph("1024", "800");
$graph->SetScale( 'textlin');
$graph->img-> SetMargin(60,40,40,110);
$graph->xaxis->SetTickLabels( $x );
$graph->xgrid->Show(true);

有什么提示吗?

【问题讨论】:

  • 如果你直接在第 3 行之前echo $row["TIME_STAMP"]; 会得到什么?
  • 给我空白....发生了什么事?
  • 你100%确定表的列名是TIME_STAMP吗?

标签: php mysql date timestamp jpgraph


【解决方案1】:

我在这里的猜测是您正在处理的值是一个字符串,而不是一个实际的 DateTime 对象。在将其传递到下一步之前,您可能希望使用该字符串创建一个新的 DateTime 对象。

http://www.php.net/manual/en/function.date-create.php

【讨论】:

  • 这应该不是问题,strtotime 应该返回一个可以使用的有效时间戳,如上所示。例如$ts = strtotime('now + 1 day'); printf("%s, %s", date ('j/n', $ts), date('H:i', $ts));
  • 你找到我了!我不是 PHP 人,但每次我认为我正在处理一个日期(在 JS 中)并且它开始是纪元的第一天时,我知道我的日期并不是真正的日期 :)
【解决方案2】:

你有: $graph->SetScale('textlin');

应该是: $graph->SetScale('datlin');

【讨论】:

    【解决方案3】:

    固定

    我的选择查询不包含“TIME_STAMP”字段;该图是后来添加的,但查询没有更新为 JpGraph 的新属性。

    感谢任何人的帮助。

    【讨论】:

    • 在这种情况下,$row["TIME_STAMP"] 应该触发了 未定义索引 通知。需要配置PHP报错。
    • 我在托管服务上运行(无法更改配置)。谢谢你到目前为止我还不知道的提示。
    • 1) 您不必更改整个服务器的错误报告设置。 2)无论如何,你不应该在现场开发。
    猜你喜欢
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 2015-05-14
    相关资源
    最近更新 更多