gpt4 book ai didi

php - 无法将 PayPal IPN 返回的日期时间值输入到 MySQL 表中

转载 作者:可可西里 更新时间:2023-11-01 08:39:41 24 4
gpt4 key购买 nike

Paypal IPN 正在返回一个 $_POST 负载,其中包括一个名为 payment_date 的日期时间项。 .该变量的值格式如下:

23%3A54%3A48+Jul+23%2C+2016+PDT

这当然是urlencoded。我正在为数据库更新处理它,如下所示:

$payment_date = date( 'Y-m-d H:i:s', urldecode($_POST['payment_date']) );

这个决赛$payment_date变量是我稍后尝试使用 PDO 插入到我的表中的内容。但是,上述过程返回错误:

A non well formed numeric value encountered in /purchases/paypal_ipn.php on line 70

尽管有错误,插入仍在工作,但输入的日期不正确:

1970-01-01 00:00:00

在此之前,我只尝试了没有任何格式的 urldecode:

$payment_date = urldecode($_POST['payment_date']) );

这个允许数据库插入没有任何错误,但输入的值仍然不正确:

0000-00-00 00:00:00

这里有什么我遗漏的吗?

最佳答案

这是来自 PayPal 的解码时间戳:

23:54:48 Jul 23, 2016 PDT

这不是 MySQL 的标准格式,但您可以使用 STR_TO_DATECONVERT_TZ 的组合来转换它:

SELECT CONVERT_TZ(STR_TO_DATE(SUBSTRING(col, 1, 21), '%H:%i:%s %b %d, %Y'),
SUBSTRING(col, 23), -- convert from PDT
'+00:00') -- convert to UTC time

这个答案做了两件事。首先,对 STR_TO_DATE 的调用将 PayPal 时间戳转换为合法的 MySQL 日期时间。如果你不关心时区,你可以在这里停下来。如果您确实关心时区,那么您还可以对时间戳调用 CONVERT_TZ 以将其从加利福尼亚夏令时转换为 UTC 时间。

关于php - 无法将 PayPal IPN 返回的日期时间值输入到 MySQL 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38549746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com