PHP中的日期和时间函数&MySQL


Date and Time functions in PHP & MySQL

我有日期和时间存储在我的数据库作为MySQL DATETIME数据类型。在插入数据库时,我使用以下PHP变量

$serverTime = strftime("%Y-%m-%d %H:%M:%S",$_SERVER['REQUEST_TIME']);

DATETIME存储在数据库中的示例如下:2011-11-26 01:00:27

现在我的网站需要以以下格式显示日期:November 26, 2011(不需要时间)

我该怎么做?我正在尝试下面的PHP,但错误的输出,我得到。

echo strftime("%B %d, %Y",$serverTime)

PHP strftime()函数希望输入是一个32位整数时间戳,即从1970-01-01 00:00:00开始的秒数。

MySQL datetime的默认输出格式是YYYY-MM-DD HH:MM:SS。当你在PHP中使用这个字符串时,前导数字被转换成整数2011,它被解释为在1970-01-01的第一个小时内。

所以你必须从MySQL中以另一种格式获取日期时间。选择:

  • UNIX_TIMESTAMP(datetime_column)获取日期时间作为一个整数,你可以给PHP的strftime()函数

  • DATE_FORMAT('datetime_column', '%M %d, %Y')将日期时间格式化为字符串,然后您不必使用strftime()来格式化它。

虽然我建议完全使用SQL方法,但您可以使用PHP的DateTime类在PHP中处理字符串(假设您运行的是PHP> 5.3):

// Pick a valid TimeZone
$date_obj = DateTime::createFromFormat( 'Y-m-d H:i:s', '2011-11-26 01:00:27', new DateTimeZone( 'America/New_York'));
echo $date_obj->format('F d, Y');
演示