首页 文章

使用PHP从MySQL datetime转换为另一种格式

提问于
浏览
409

我在MySQL中有一个 datetime 列 .

如何使用PHP将其转换为显示为 mm/dd/yy H:M (AM/PM)

17 回答

  • 15

    如果您正在寻找将日期规范化为MySQL格式的方法,请使用以下方法

    $phpdate = strtotime( $mysqldate );
    $mysqldate = date( 'Y-m-d H:i:s', $phpdate );
    

    $phpdate = strtotime( $mysqldate ) 接受一个字符串并执行一系列启发式操作以将该字符串转换为unix时间戳 .

    $mysqldate = date( 'Y-m-d H:i:s', $phpdate ) 行使用该时间戳和PHP的date函数将该时间戳恢复为MySQL的标准日期格式 .

    Editor Note :这个答案在这里是因为一个原始问题,令人困惑的措辞,以及这个答案所提供的一般Google有用性,即使它没有'直接回答现在存在的问题)

  • 12

    如果您使用的是PHP 5,也可以尝试

    $oDate = new DateTime($row->createdate);
    $sDate = $oDate->format("Y-m-d H:i:s");
    
  • 103

    要正确格式化PHP中的 DateTime 对象以便在MySQL中存储,请使用MySQL使用的标准化格式,即ISO 8601 .

    从版本5.1.1开始,PHP已将此格式存储为常量,我强烈建议您使用它,而不是每次都手动键入字符串 .

    $dtNow = new DateTime();
    $mysqlDateTime = $dtNow->format(DateTime::ISO8601);
    

    这个以及其他PHP DateTime常量的列表可在http://php.net/manual/en/class.datetime.php#datetime.constants.types获得 .

  • 5

    要将从MySQL检索的日期转换为请求的格式( mm/dd/yy H:M (AM/PM) ):

    // $datetime is something like: 2014-01-31 13:05:59
    $time = strtotime($datetimeFromMysql);
    $myFormatForView = date("m/d/y g:i A", $time);
    // $myFormatForView is something like: 01/31/14 1:05 PM
    

    请参阅PHP date formatting options调整格式 .

  • -1
    SELECT 
     DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom,
     DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil
    FROM demo
    

    如果您不想更改PHP代码中的每个函数,要显示预期的日期格式,请在源代码中更改它 - 您的数据库 .

    使用 as 运算符命名行非常重要,如上例所示(作为dateFrom,作为dateUntil) . 您在那里写的名称是名称,行将在您的结果中调用 .

    这个例子的输出将是

    [月份的日期,数字(0..31)] . [月份名称(1月〜12月)] . [年份,数字,4位数]

    示例:5 . 2015年8月

    使用选择的分隔符更改点,并检查DATE_FORMAT(date,format)函数以获取更多日期格式 .

  • 1

    一种更简单的方法是直接在MySQL查询中格式化日期,而不是PHP . 见MySQL manual entry for DATE_FORMAT .

    如果你宁愿用PHP做,那么你需要date函数,但是你必须先将数据库值转换为时间戳 .

  • 290

    使用PHP 4.4.9版和MySQL 5.0,这对我有用:

    $oDate = strtotime($row['PubDate']);
    $sDate = date("m/d/y",$oDate);
    echo $sDate
    

    PubDateMySQL中的列 .

  • 35

    使用date函数:

    <?php
        echo date("m/d/y g:i (A)", $DB_Date_Field);
    ?>
    
  • 9

    这应格式化SQL查询中的字段:

    SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename
    
  • 477

    忘记所有 . 只需使用:

    $date = date("Y-m-d H:i:s",strtotime(str_replace('/','-',$date)))
    
  • 5

    取决于您的MySQL日期时间配置 . 通常: 2011-12-31 07:55:13 格式 . 这个非常简单的功能应该具有魔力:

    function datetime()
    {
        return date( 'Y-m-d H:i:s', time());
    }
    
    echo datetime(); // display example: 2011-12-31 07:55:13
    

    或者更进一步以匹配问题 .

    function datetime($date_string = false)
    {
        if (!$date_string)
        {
            $date_string = time();
        }
        return date("Y-m-d H:i:s", strtotime($date_string));
    }
    
  • 10

    这将有效......

    echo date('m/d/y H:i (A)',strtotime($data_from_mysql));
    
  • 8
    $valid_date = date( 'm/d/y g:i A', strtotime($date));
    

    Reference: http://php.net/manual/en/function.date.php

  • 3

    您可能遇到Unix时间戳中未返回日期的问题,因此这对我有用...

    return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))
    
  • 0

    您还可以将查询作为Unix时间戳返回 . 这样就不需要调用 strtotime() 并在PHP方面减少密集程度......

    select  UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234;
    

    然后在PHP中使用 date() 函数以您想要的方式格式化它 .

    <?php
      echo date('l jS \of F Y h:i:s A', $row->unixtime);
    ?>
    

    要么

    <?php
      echo date('F j, Y, g:i a', $row->unixtime);
    ?>
    

    我喜欢这种方法而不是使用MySQLDATE_FORMAT 函数,因为它允许您重用相同的查询来获取数据,并允许您更改PHP中的格式 .

    有两个不同的查询只是为了改变日期在UI中的显示方式,这很烦人 .

  • 1
    $date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";
    
  • 7

    最后是PHP 5.3及以上版本的正确解决方案:

    $date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date);
    echo $date->format('m/d/y h:i a');
    

相关问题