转换为dd/mmm/yyyy格式

4

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


3
三位数的月份?你住在木星上吗? - Otto Allmendinger
3
我猜他指的是一月、二月、十二月等。 - Tatu Ulmanen
2
我假设MMM = 一月,二月......等。 - kevchadders
7
在这个星球上使用三个字符。 - RKh
5个回答

13

使用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) 即可,无需进行任何其他转换。


5

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

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

MySQL内部将日期存储为数字,这样您只需解析和格式化日期一次。 - Piskvor left the building
但是我正在使用Select * <表名>。 - RKh
你一定要使用 SELECT * 吗?如果使用 SELECT *, DATE_FORMAT(...) as myDate FROM ... 也可以,但是这样 MySQL 就会传输两次日期字段,而日期字段只需要格式化一次的优势就不存在了。 - VolkerK

0
你应该查看 PHP 中的 date() 函数(docs)。
print date('d/M/Y', $row['tstamp']);

如果您的日期字段是 DATETIMETIMESTAMP,则适用此方法。请记得将字段包装在 UNIX_TIMESTAMP() (docs) 中,例如:SELECT ..., UNIX_TIMESTAMP(dateField) AS tstamp FROM ...

1
date()函数的seconds参数必须是Unix时间戳,而不是MySQL DATETIME或TIMESTAMP的文本表示。因此,在查询中您需要使用UNIX_TIMESTAMP(date)函数,详情请参考http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_unix-timestamp。 - VolkerK

0

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

SELECT UNIX_TIMESTAMP(field) as date_field
FROM table

然后,您可以将其直接传递到PHP的date()函数中,以获得所需的格式。

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

0
$d=date_create('2009-12-04 09:15:00');
echo $d->format('dd/M/yyyy');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接