使用PHP定义2个日期的期末(订阅模型)

时间:2015-03-29 22:16:32

标签: php date

我正在构建一个与Zapier WebHooks一起使用的脚本。在Gmail收到包含来自支付网关的特定主题和消息的电子邮件后,Zapier将向此脚本发送一个帖子请求。

无论如何,其中一个钩子是一个带有主题的消息"订阅被取消"。在收到此帖子请求后,我无法设置我的脚本以结束订阅,因为我需要保持客户端访问,直到他到达上一个付费期间的末尾(我有3个计划:1个月,6个月和1年的订阅,自动更新)。

网关发送的电子邮件附带的数据可让我了解首次购买订阅的时间,格式为:dd / mm / yyyy。

(对我而言,我到达那里......)

所以我有购买日期和取消日期(这是我的脚本收到帖子请求的那一天)。现在我怀疑:如何根据这两个日期设置我的脚本来定义EOT(期末)?

例如,假设客户已于03/02/2015购买了他的月份会员资格(年/月/日)。然后我的脚本被告知他于2015年3月29日取消。我可以将这2个日期存储在2个变量中:$purchaseDate$cancellationDate。现在我需要设置我的PHP代码,以便它可以计算EOT($eotDate),在这种情况下,即03/04/2015。

更具体:

1)如果是月订阅,$eotDate将是$purchaseDate之后的下一个$cancellationDate天(上例中的第03天)。

2)如果订阅期为6个月,则$eotDate将是距离$purchaseDate 6个月后$purchaseDate天(上例中的第03天),因为它导致将来的日期。如果过去的结果日期是(是),我们可以假设有续订,因此$eotDate将是距离{{1} 12个月之后的$purchaseDate天(第03天) }。等等。

3)如果是1年订阅,$purchaseDate将是距离$eotDate 12个月后$purchaseDate天(上例中的第03天),因为它导致将来的日期。如果过去的结果日期是(是),我们可以假设有续订,因此$purchaseDate将是距离{{1} 24个月之后的$eotDate天(第03天) }。等等。

我还在学习PHP,因此我只能定义今天的日期和1年(或从今天开始的几天或几个月)。但首先我需要坚持取消日。我不知道怎么做,因为$purchaseDate函数会给我当前日期(会不断变化)。

$purchaseDate

如你所见,我迷失了。

对于任何想要帮助的人,但认为任务太多,如果你只能帮助1号(月订阅),我将非常感激。

1 个答案:

答案 0 :(得分:0)

您应该查看PHP中的DateTime docs

$now=new DateTime("now");
$cancelation_date=new DateTime("2016-04-03"); // A year from now