在 PHP 中,如何在从 iPhone InApp 收据中检索到的购买日期加上 3 个月?

Posted

技术标签:

【中文标题】在 PHP 中,如何在从 iPhone InApp 收据中检索到的购买日期加上 3 个月?【英文标题】:In PHP, how do I add 3 months to the purchase date retrieved from the iPhone InApp receipt? 【发布时间】:2010-02-21 12:49:31 【问题描述】:

在我从我的 php 服务器向 App Store 验证收据后,App Store 会向我发回 JSON 响应

"status" : 0 
"receipt" : ( .... )

其中一个收据项目是“purchase_date”,其中包含以下字符串(示例)“2010-02-09 19:17:04 Etc/GMT”

我正在尝试建立订阅服务,并希望在此日期上增加 3 个月,然后将该到期日期写入 mysql 表中。

PHP中是否有一个string-to-date类型的函数可以让我实现3个月的加法?

我发现这个例子看起来像是给日期增加了 1 个月:

$date = date("Y-m-d");// current date
$date = strtotime(date("Y-m-d", strtotime($date)) . " +1 month");

但我不确定如何将 App Store 传递的字符串转换为 PHP 识别的日期。

【问题讨论】:

【参考方案1】:

你已经做到了,只是你加了太多步骤。

$purchase_date = "2010-02-09 19:17:04";
$purchase_date_timestamp = strtotime($purchase_date);
$purchase_date_3months = strtotime("+3 months", $purchase_date_timestamp);

echo "Purchase date + 3months = ".date("Y-m-d h:i:s", $purchase_date_3months);

这取决于strtotime 识别您的时间字符串 - 先尝试一下。但通常,strtotime 可以识别任何格式正确的英美日期/时间字符串。如有疑问,请查看manual

【讨论】:

【参考方案2】:

不要将时间视为标量值 - 它比这要复杂得多。我建议您将此逻辑推送到您的数据库中,前提是您使用一个用于存储数据的逻辑?或者,最新版本的 PHP 有一个datetime object,可以使用。

【讨论】:

以上是关于在 PHP 中,如何在从 iPhone InApp 收据中检索到的购买日期加上 3 个月?的主要内容,如果未能解决你的问题,请参考以下文章

iphone中非消耗品的inapp购买[重复]

我们可以将实时应用程序转换为 iphone 中的 InApp 应用程序吗? [关闭]

php - Laravel:如何在从下拉列表中选择更改后加载 Ajax 数据?

在ios设备上集成phonegap inapp购买插件时出错

InApp Purchase 内容在多个移动平台(iOS 和 Android)上的兼容性。

如何动态获取 InApp 购买的价格等级?