【发布时间】:2010-08-04 12:55:47
【问题描述】:
从 mysql 时间戳 (YYYY-MM-DD HH:MM:SS) 转换为我自己选择的格式(例如“2010 年 8 月 5 日”)的正确方法是什么?我怎样才能使 mysql 时间戳 php date() 兼容?
【问题讨论】:
标签: php mysql database date time
从 mysql 时间戳 (YYYY-MM-DD HH:MM:SS) 转换为我自己选择的格式(例如“2010 年 8 月 5 日”)的正确方法是什么?我怎样才能使 mysql 时间戳 php date() 兼容?
【问题讨论】:
标签: php mysql database date time
有两种方法...
首先,您可以在 php 中使用 strtotime()...
$time = strtotime('2010-05-05 05:05:05');
echo date('F j, Y', $time);
或者,您可以在 MySQL 中使用 UNIX_TIMESTAMP() 将其转换为 unix 时间:
SELECT UNIX_TIMESTAMP(`your timestamp column`) FROM blahblah....
然后你需要在获取它之后在 php 中使用date() 对其进行格式化。
或者,您可以在 MySQL 中使用 DATE_FORMAT() 完成所有操作:
SELECT DATE_FORMAT(`your timestamp column`, '%M %e, %Y') FROM ...
【讨论】:
NOW(),则与在此处使用NOW() 相同,而无需我们提供任何输入(MySQL 将时区偏移信息存储在二进制日志中)。没有它,我们需要在 PHP 中手动更正每个日期到/从时区和 UTC(对于一个日期来说很容易,对于有许多开发人员的整个应用程序来说很容易忘记)......我们已经这样做了 3 年没有任何问题。所以是的,我确实相信它......
您可以让 MySQL 将其作为 Epoch 时间戳返回,php 的日期函数可以处理或使用以下函数:
$epoch = strtotime('YYYY-MM-DD HH:MM:SS');
【讨论】:
第三种选择:使用 MySQL 的 DATE_FORMAT() 函数(虽然我更喜欢 ircmaxell 的方式)
【讨论】:
见date 和strtotime。有关其他时区的操作,请参阅 date_default_timezone_set 和 DateTime 类。
【讨论】: