【问题标题】:PHP: convert date with DateTime ClassPHP:使用 DateTime 类转换日期
【发布时间】:2013-11-09 10:25:13
【问题描述】:

我从 PayPal IPN 得到这个日期

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');

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

谢谢

【问题讨论】:

  • 尝试DateTime::createFromFormat 并明确指定您期望的日期格式。
  • @DoobyInc:OP 已经知道如何更改格式,他只是在问为什么它不起作用,什么时候应该起作用。

标签: php date datetime time


【解决方案1】:

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;

Output:

2009-01-13T20:12:59Z

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

【讨论】:

  • Perfect ;) 现在我只需要将 PST 转换为 UTC,但这没有问题。非常感谢
  • @sineverba:很高兴我能帮上忙 :)
猜你喜欢
  • 2012-05-28
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
相关资源
最近更新 更多