我正在编写应用程序的一部分,用户可以在其中添加跨越多天的事件。所以我进入了$ begindate,$ enddate和$ type。类型将是每日,每周或每月。我正在尝试立即处理每日请求。我需要做的是在每天的日期表中插入一行,包括begindate,enddate,以及每天选择每日的日期。由于几个月显然有不同的天数,我不能简单地在php日期的那一天添加1或7,我将如何处理这个?
我做
$begindate = date('Y-m-D', strtotime($begindate))
我收到帖子的所有日期。
我没有使用过多的PHP日期对象,我们将不胜感激。
答案 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了解详情。