首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP中扩展日期?

如何在PHP中扩展日期?
EN

Stack Overflow用户
提问于 2014-05-08 19:18:09
回答 3查看 955关注 0票数 0

我已经开发了一个订阅网站。我正面临着php日期延长的问题。

请阅读我的信息-

假设今天我订阅了一个套餐。套餐时长1个月。我的意思是2014-05-08到2014-06-07

两天后,我会再次订阅这个相同的套餐。套餐时长从2014-06-07延长至2014-07-07

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

我使用了以下代码:

代码语言:javascript
复制
date('Y-m-d h:i:s', mktime(0, 0, 0, date("m")+$getSubscription['Subscription']['duration'], date("d"), date("Y")));
EN

回答 3

Stack Overflow用户

发布于 2014-05-08 19:22:32

您可以使用strtotime来实现这一点。

看看这个:

代码语言:javascript
复制
<?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;

输出:2014-07-07

附注:您是否将新计算的日期保存到数据库中,然后在下一次计算中使用它?

票数 1
EN

Stack Overflow用户

发布于 2014-05-08 19:25:46

或者使用DateTime对象:

代码语言:javascript
复制
<?php

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

echo $date_end->format('Y-m-d');
票数 0
EN

Stack Overflow用户

发布于 2014-05-08 19:25:02

使用DateTime对象而不是使用date()和mktime()可以省去很多麻烦。为了今天,简单地说:

代码语言:javascript
复制
$subscriptionDate = new DateTime(); // 2014-05-08

然后,您可以使用DateInterval类添加额外的月份,因此,如果是按月订阅,只需:

代码语言:javascript
复制
$subscriptionPeriod = new DateInterval('P1M');
$subscriptionDate->add($subscriptionPeriod);

现在,$subscriptionDate将在2014-06-08。您可以根据需要添加任意多个月,并以所需的格式将其保存到数据库中,例如:

代码语言:javascript
复制
$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

有关更多示例,请参阅the manual

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23540249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档