2013-11-09 66 views
2

我从贝宝IPNPHP:转换日期DateTime类

payment_date = 20:12:59 Jan 13, 2009 PST 

这个日期我怎么能在Y-m-d\TH:i:s\Z转换?

我曾尝试与

$date = new DateTime($_POST['payment_date']); 
$payment_date = $date->format('Y-m-d\TH:i:s\Z'); 

但在我的DB我只获得'0000-00-00 00:00:00'

谢谢

+2

尝试['DateTime :: createFromFormat'](http://us.php.net/manual/en/datetime.createfromformat.php)并明确指定您期望的日期格式。 – DCoder

+1

@DoobyInc:OP已经知道如何改变格式,他只是问为什么它不工作,什么时候应该。 –

回答

6

日期时间应该能够解析这个格式:

$str = '20:12:59 Jan 13, 2009 PST';  
$date = new DateTime($str); 
$date->setTimezone(new DateTimezone('UTC')); 
$payment_date = $date->format('Y-m-d\TH:i:s\Z'); 
echo $payment_date; 

Output

2009-01-13T20:12:59Z 

这应该按预期工作。您的$_POST['payment_date']变量可能在开头或结尾处包含一些额外的字符。您可以在$_POST变量上尝试trim()以确保在开始或结束时没有任何空格。

+2

完美;)现在我只需要从PST转换到UTC,但没有问题。非常感谢你 – sineverba

+0

@sineverba:很高兴我能帮忙:) –