【发布时间】:2017-04-21 00:37:53
【问题描述】:
我想用 PHP 计算 Recurly 计划的下一个计费日期。 有 2 种计费周期:每年 |每月一次。 我尝试使用 DateTime 和 DateInterval 类,但没有得到预期的结果。
<?php
$referenceTime = new \DateTime('2016-01-31');
$oneMonthLater = $referenceTime->modify('+1 month');
var_dump($oneMonthLater);
// public 'date' => string '2016-03-02 00:00:00.000000'
在 1 月 31 日加上一个月,我得到的是 3 月 2 日,而不是我预期的 2 月 29 日(或 28 日)。
8 月 31 日也是如此:
<?php
$referenceTime = new \DateTime('2016-08-31');
$oneMonthLater = $referenceTime->modify('+1 month');
var_dump($oneMonthLater);
// public 'date' => string '2016-10-01 00:00:00.000000'
如果每年,我预计 2016 年 2 月 29 日 + 1 年 => 2017 年 2 月 28 日
谢谢。
【问题讨论】:
-
向我们展示你到目前为止所做的事情......我们会更容易回答。
-
$next_bill_date = new DateTime(); if ($plan_interval_unit == 'year') { $interval_spec = 'P'.$plan['plan_interval_length'].'Y'; } else if ($plan_interval_unit == 'month') { $interval_spec = 'P'.$plan['plan_interval_length'].'M'; } $next_bill_date->add(new DateInterval($interval_spec));
-
请在您的问题中添加它。在这里很难阅读/理解...... :(