PHP:使用DateTime类转换日期

sin*_*rba 2 php time datetime date

我是PayPal IPN的约会对象

payment_date = 20:12:59 Jan 13, 2009 PST
Run Code Online (Sandbox Code Playgroud)

我怎么可以转换Y-m-d\TH:i:s\Z

我确实尝试过

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

但在我的数据库中,我只获得了 '0000-00-00 00:00:00'

谢谢

Ama*_*ali 6

DateTime应该能够解析这种格式:

$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;
Run Code Online (Sandbox Code Playgroud)

输出:

2009-01-13T20:12:59Z
Run Code Online (Sandbox Code Playgroud)

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

  • 完美;)现在我只需要从PST转换为UTC,但没有问题.非常感谢你 (2认同)