增加PHP日期

时间:2012-02-24 21:05:52

标签: php sql date

我正在编写应用程序的一部分,用户可以在其中添加跨越多天的事件。所以我进入了$ begindate,$ enddate和$ type。类型将是每日,每周或每月。我正在尝试立即处理每日请求。我需要做的是在每天的日期表中插入一行,包括begindate,enddate,以及每天选择每日的日期。由于几个月显然有不同的天数,我不能简单地在php日期的那一天添加1或7,我将如何处理这个?

我做

$begindate = date('Y-m-D', strtotime($begindate))

我收到帖子的所有日期。

我没有使用过多的PHP日期对象,我们将不胜感激。

2 个答案:

答案 0 :(得分:3)

首先,尽可能使用DateTime类。然后,查看DateTime::add()

此外,DatePeriod类可以按您请求的间隔自动创建一系列DateTime对象,这样可以更容易地接受不同的重复间隔:

$start = new \DateTime($beginDate);
$end = new \DateTime($endDate);
$interval = new \DateInterval('P1D');
$period = new \DatePeriod($start, $interval, $end);
foreach ($period as $day) {
    // will iterate over each day in the period
}

DateTime在它的构造函数中接受的字符串中非常灵活(查看引用here),这使得从今天获取日期变得非常简单。例如,如果您想要一个代表现在一周的DateTime对象,$date = new \DateTime('+1 week');将为您执行此操作。

答案 1 :(得分:2)

$days = 1; // Or 7 or 30, or anything..
$nextday = date('Y-m-D', strtotime($begindate) + 86400 * $days);

或使用DateTime对象。

$days = 1; // Or again 7.. or 30..

$begin = new DateTime($begindate);
$begin->add(new DateInterval('P' . $days . 'D'));
$nextday = $date->format('Y-m-D');

如果您需要额外添加数周或数月,请查看DateInterval了解详情。