Php 格式化日期时出现问题

Php 格式化日期时出现问题,php,mysql,datetime,mktime,Php,Mysql,Datetime,Mktime,我正在尝试编写一个函数来为我设置日期和时间的格式。我有一个几乎相同的函数,它只格式化一个日期。该函数工作正常。我只是添加了一些代码,尝试用时间格式化日期。它应该返回类似“2009年5月18日9:50 PM”的内容,但我收到了以下警告: Warning: mktime() expects parameter 6 to be long, string given in public_html/include/functions.php on line 421 以下是我的代码: function d

我正在尝试编写一个函数来为我设置日期和时间的格式。我有一个几乎相同的函数,它只格式化一个日期。该函数工作正常。我只是添加了一些代码,尝试用时间格式化日期。它应该返回类似“2009年5月18日9:50 PM”的内容,但我收到了以下警告:

Warning: mktime() expects parameter 6 to be long, string given in
public_html/include/functions.php on line 421
以下是我的代码:

function dateTimeFormat($dateIn)
{
   $x = explode(" ",$dateIn);
   $y = explode("-",$x[0]);
   $z = explode(":",$x[1]);

   $year = $y[0]; 
   $month = $y[1];
   $day = $y[2];
   $hour = $z[0];
   $min = $z[1];

   $dateOut =date("F j, Y h:i A", mktime($hour, $min, 0, $month, $day, $year)); 

   return $dateOut;
}
它所发布的内容也是错误的。它提出:

December 31, 1969 07:00 PM
但是数据库中的时间戳是

2009-05-18 05:07:39

PHP已经有了一个非常好的日期解析函数:。它返回一个Unix时间戳,您可以将其传递到
date()

换句话说,您的功能可以简化为:

function dateTimeFormat($dateIn)
{
    return date("F j, Y h:i A", strtotime($dateIn));
}

PHP已经有了一个非常好的日期解析函数:。它返回一个Unix时间戳,您可以将其传递到
date()

换句话说,您的功能可以简化为:

function dateTimeFormat($dateIn)
{
    return date("F j, Y h:i A", strtotime($dateIn));
}

这消除了警告,但它仍然显示错误。它仍然显示:1969年12月31日07:00 PM,但MySQL中的时间戳是2009-05-18 00:00:00。这很可能是他传递给dateTimeFormat()的内容的一个特定(可能是无关的)问题。我给出的代码将按原样工作。您可能还注意到,strotime在PHP5.2.8中有一个严重的内存泄漏。它消除了警告,但仍然显示错误。它仍然显示:1969年12月31日07:00 PM,但MySQL中的时间戳是2009-05-18 00:00:00。这很可能是他传递给dateTimeFormat()的内容的一个特定(可能是无关的)问题。我给出的代码将按原样工作。您可能还注意到,strotime在PHP5.2.8中存在严重的内存泄漏。