【问题标题】:When converting a mysql time in php I always get 16:00:20, regardless of the mysql time在 php 中转换 mysql 时间时,无论 mysql 时间如何,我总是得到 16:00:20
【发布时间】:2026-02-13 12:00:01
【问题描述】:

我在转换时间时遇到问题,当我在 mysql 时间戳上使用 date() 函数时,它只返回 16:00。

我使用 date() 函数是不是错了?

PHP:

date_default_timezone_set('America/Los_Angeles');

$date = date('H:i:s A'); 
echo "System: $date <br />";

$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$query = "SELECT CURTIME() as timestamp";
$result = mysqli_query($dbc, $query) or die(mysqli_error());
$row = mysqli_fetch_assoc($result);
echo "DB CurTime: ".$row["timestamp"]."<br />";
echo "DB CurTime Converted: ".date("H:i:s A",$row["timestamp"]);

输出:

系统:晚上 20:41:23

数据库当前时间:20:41:23

转换后的 DB CurTime:下午 16:00:20

【问题讨论】:

    标签: php mysql date time


    【解决方案1】:

    是的,你用错了date()date() 接受 UNIX 时间戳形式的第二个参数,但这不是您要处理的。

    从 MySQL 获取时使用 UNIX_TIMESTAMP() 而不是 CURTIME(),尽管我确实想知道为什么您从 MySQL 获取时间而不是使用 PHP 非常好的 time()

    【讨论】:

      【解决方案2】:

      CURTIME() 不会以秒为单位返回 UNIX 时间戳。您需要在其上运行 strtotime()

      你的最后一行应该是:

      echo "DB CurTime Converted: ".date("H:i:s A", strtotime($row["timestamp"]));
      

      另一方面,Kalium's answer 也有值得考虑的信息。

      【讨论】:

        【解决方案3】:

        试试这个:

        echo "DB CurTime Converted: ".date("H:i:s A",strtotime($row["timestamp"]));
        

        编辑 - 哎呀,太慢了。

        【讨论】:

          【解决方案4】:

          您需要使用 unix_timestamp() mysql 函数转换时间,或者使用 strtotime() 转换 PHP 中的时间。

          解决方案 1 更改您的查询

          $query = "SELECT UNIX_TIMESTAMP(CURTIME()) as timestamp";
          

          我没有测试这个查询,但我相信它会起作用。

          解决方案 2:更改最后一行

          echo "DB CurTime Converted: ".date("H:i:s A",strtotime($row["timestamp"]));
          

          你可以尝试任何人!两者都应该产生相同的结果!

          【讨论】: