如何在PHP中扩展日期?

如何在PHP中扩展日期?,php,Php,我开发了一个订阅网站。我面临php日期扩展问题 请看我的留言- 假设今天我订阅了一个包。包期1个月。我是说2014-05-08到2014-06-07 两天后,我将再次订阅相同的软件包。现在,项目包期限将从2014-06-07延长至2014-07-07 在我的PHP代码中,我将当前日期设置为+1个月,但如何在1个月后设置为下一个月 我使用了以下代码: date('Y-m-d h:i:s', mktime(0, 0, 0, date("m")+$getSubscription['Subscripti

我开发了一个订阅网站。我面临php日期扩展问题

请看我的留言-

假设今天我订阅了一个包。包期1个月。我是说2014-05-08到2014-06-07

两天后,我将再次订阅相同的软件包。现在,项目包期限将从2014-06-07延长至2014-07-07

在我的PHP代码中,我将当前日期设置为+1个月,但如何在1个月后设置为下一个月

我使用了以下代码:

date('Y-m-d h:i:s', mktime(0, 0, 0, date("m")+$getSubscription['Subscription']['duration'], date("d"), date("Y")));
您可以使用来实现这一点

看看这个:

<?php

// current subscription expiry date
$day = '2014-06-07';

// add 30 days to the date above
$new_date = date('Y-m-d', strtotime($day . " +30 days"));

// debug
echo $new_date;

使用DateTime对象,而不是在date()和mktime()之间乱搞,可以省去很多麻烦。为了获得今天,只需:

$subscriptionDate = new DateTime(); // 2014-05-08
然后,您可以使用DateInterval类添加额外的月份,因此,如果是每月订阅,只需:

$subscriptionPeriod = new DateInterval('P1M');
$subscriptionDate->add($subscriptionPeriod);
现在,
$subscriptionDate
将于2014-06-08发布。您可以继续添加任意数量的月份,并以所需格式将其保存到数据库中,如:

$subscriptionDate->format('Y-m-d'); // 2014-06-08
$subscriptionDate->format('Y-m-d H:i:s'); // incl. time, e.g. 2014-06-08 12:02:45

有关更多示例,请参见。

或使用DateTime对象:

<?php

$date = new DateTime('2014-06-07');
$date_end = clone $date;
$date_end->add(new DateInterval('P1M');

echo $date_end->format('Y-m-d');