【问题标题】:Formatting year in PHP from SQL database using date()?使用 date() 从 SQL 数据库格式化 PHP 年份?
【发布时间】:2013-04-15 23:27:02
【问题描述】:

我已上传存储在 MySQL 数据库中的图像的日期,类型为“日期时间”。

例如2013-04-16 00:20:00

但无论我做什么,我似乎都无法让日期在我的 PHP 代码中正确回显。这是我目前拥有的:

$session_query = mysql_query($sql);
$upload_date_formatted = date('M jS, Y', $session_query['upload_date']);
echo '<h6> Uploaded on '.$upload_date_formatted.' .</h6>';

使用上面的示例,这总是给出:'Uploaded on Jan 1st, 1970.'。

有什么想法吗?我已经尝试了很多东西,但我似乎无法正确显示这个日期。

【问题讨论】:

    标签: php mysql date datetime


    【解决方案1】:

    Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解 prepared statements,并使用 PDOMySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial


    您需要在$session_query 上调用mysql_fetch_assoc() 以将其转换为可用数组。

    您还需要通过strtotime() 传递$session_query['upload_date'] 以将其转换为date() 所期望的整数。

    $session_query = mysql_query($sql);
    $row = mysql_fetch_assoc($session_query);
    $upload_date_formatted = date('M jS, Y', strtotime($row['upload_date']));
    echo '<h6> Uploaded on '.$upload_date_formatted.' .</h6>';
    

    您正尝试从非数组传递数组键,即null,当date() 转换为整数时将为零,从而导致日期为 01/01/1970你看到了。这也会引发一些错误 - 您应该打开错误报告,因为它可以帮助您更快地跟踪开发环境中的错误:

    error_reporting(-1);
    ini_set('display_errors', 1);
    

    您也可以使用DateTime 对象和createFromFormat() 方法:

    $session_query = mysql_query($sql);
    $row = mysql_fetch_assoc($session_query);
    $date = DateTime::createFromFormat('Y-m-d H:i:s', $row['upload_date']);
    $upload_date_formatted = $date->format('M jS, Y');
    

    【讨论】:

      【解决方案2】:

      您需要先使用strtotime()将其转换为Unix时间戳,然后您可以使用date()对其进行格式化。

      $session_query = mysql_query($sql);
      $upload_date_formatted = date( 'M jS, Y', strtotime( $session_query['upload_date'] ) );
      echo '<h6> Uploaded on '.$upload_date_formatted.' .</h6>';
      

      附带说明, mysql_* 扩展已被弃用。请改用PDO

      【讨论】:

        【解决方案3】:

        使用 MySQL Date_Format 函数而不是 PHP,格式为 '%b %e, %Y'

        【讨论】:

          猜你喜欢
          • 2012-05-01
          • 1970-01-01
          • 2010-12-19
          • 2014-07-11
          • 2013-04-04
          • 1970-01-01
          • 2014-07-19
          • 1970-01-01
          • 2013-06-25
          相关资源
          最近更新 更多