【问题标题】:Convert to dd/mmm/yyyy转换为 dd/mmm/yyyy
【发布时间】:2009-12-04 12:00:28
【问题描述】:

我正在以 yyyy/mm/dd 00:00:00 格式从 MySQL 检索日期。我想在 PHP 中将此日期转换为 dd/MMM/yyyy 格式。

【问题讨论】:

  • 三位数月份?你住在木星上吗?
  • 我猜他的意思是 JAN、FEB、DEC 等。
  • 我假设 MMM = Jan、Feb.... 等
  • @Otto:这个星球上使用了三个字符。

标签: php date-format date-formatting


【解决方案1】:

使用 PHP 的 datestrtotime

$formatted = date('d/M/Y', strtotime($date_from_mysql));

或者使用MySQL内置的DATE_FORMAT函数:

SELECT DATE_FORMAT(datetime, '%d/%b/%Y') datetime FROM table

或者,您可以混合两种口味:

SELECT UNIX_TIMESTAMP(datetime) timestamp FROM table;

$formatted = date('d/M/Y', $timestamp);

如果您需要在同一页面上获取几种不同的格式,则最后一种方法很方便;比如说,你想单独打印日期和时间,那么你可以直接使用 date('d/M/Y', $timestamp) 和 date('H:i', $timestamp) 而不需要任何进一步的转换。

【讨论】:

    【解决方案2】:

    虽然您特别要求提供 php 解决方案,但您可能也对 MySQL 的 date_format() 函数感兴趣。

    SELECT date_format(dt, '%d/%m/%Y') ...
    

    【讨论】:

    • +1 MySQL 在内部将日期存储为数字;这样,您只需解析和格式化日期一次。
    • 但我使用的是 Select * .
    • 你必须使用SELECT * 吗?它可以与SELECT *, DATE_FORMAT(...) as myDate FROM ... 一起使用,但随后 MySQL 将传输日期字段两次,并且日期字段只需格式化一次的优势就消失了。
    【解决方案3】:

    您实际上可以让 mySQL 将日期转换为 unix 时间戳

    SELECT UNIX_TIMESTAMP(field) as date_field
    FROM table
    

    然后你可以直接将它传递给 PHP 的 date() 函数来获得你想要的格式

    date('d/M/Y', $row['date_field'])
    

    【讨论】:

      【解决方案4】:
      $d=date_create('2009-12-04 09:15:00');
      echo $d->format('dd/M/yyyy');
      

      【讨论】:

        【解决方案5】:

        您应该看看 PHP 中的 date() 函数 (docs)。

        print date('d/M/Y', $row['tstamp']);
        

        这适用于您的日期字段是 DATETIMETIMESTAMP。请记住将字段包装在 UNIX_TIMESTAMP() (docs) 中,例如SELECT ..., UNIX_TIMESTAMP(dateField) AS tstamp FROM ....

        【讨论】:

        • date() 的 seconds 参数必须是 unix 时间戳,而不是 MySQL DATETIME 或 TIMESTAMP 的文本表示。因此,您必须在查询中使用 UNIX_TIMESTAMP(date) 函数,dev.mysql.com/doc/refman/5.0/en/…
        猜你喜欢
        • 1970-01-01
        • 2012-09-12
        • 1970-01-01
        • 2023-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-28
        • 1970-01-01
        相关资源
        最近更新 更多