2009-05-19 58 views
1

我想写一个函数来格式化日期和时间。我有一个几乎相同的函数,它只是格式化一个日期。该功能工作正常。我只是添加了一些代码来尝试,并用一段时间格式化日期。它应该返回类似“2009年下午9:50 5月18日,”但我得到这样的警告:格式化日期的问题

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 

回答

4

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

换句话说,你的函数可以减少到这一点:

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

这摆脱了警告,但它仍然是错误的显示。它仍然显示:1969年12月31日07:00 PM,但MySQL中的时间戳为2009-05-18 00:00:00。 – 2009-05-19 02:17:34

+0

我修正了这个问题 – 2009-05-19 02:22:00

+0

恩,怎么样?请分享! – Jrgns 2009-05-19 02:34:42