我需要获取一个日期列表,其范围应该是当天,直到下周的指定日期(在本例中为星期六)。
示例:
今天是friday, august 1st 2014
,所以它应该从今天开始到saturday, august 9th 2014
:
fri, 2014-08-01
sat, 2014-08-02
(sun excluded)
mon, 2014-08-04
tue, 2014-08-05
wed, 2014-08-06
thu, 2014-08-07
fri, 2014-08-08
sat, 2014-08-09
(sun excluded)
我该如何解决这个问题?
我在考虑使用DateInterval
课程,这是我到目前为止所做的:
$now = date('Y-m-d');
$start = new DateTime($now);
$end = new DateTime($now);
$oneweek = new DateInterval('P1W');
$oneday = new DateInterval('P1D');
$days = array();
foreach(new DatePeriod($start, $oneday, $end->add($oneweek)) as $day) {
$day_num = $day->format('N');
if($day_num < 7) {
$days[$day->format('Y-m-d')] = 'valid date';
}
}
它适用于排除星期日,但它只能在当前日期后的一周内,即7天。所以我想知道是否有办法使$end
成为:&#39;下周的星期六&#39; 。
答案 0 :(得分:0)
实际上有一种方法可以做到这一点,如果您查看DatePeriod's Manual page的评论部分,您会找到DateInterval
类的使用示例&# 39; createFromDateString
静态方法, jkaatz at gmx dot de (2009-07-10 01:55):
$interval = DateInterval::createFromDateString('last thursday of next month');
使用相同的方法,您可以使用以下字符串构建日期间隔:
下周的星期天
它可以让你获得当天(包括本周和周六)之间的所有日期,直到下周的星期六(自DatePeriod
计算最多但不包括 end 日期。)
您可以在其手册页上找到有关createFromDateString
方法的更多信息,您还可以在Relative Formats Manual pages上找到有关构建区间字符串的语法,关键字和符号的更多信息,它们也被strtotime()
函数和DateTime
类使用。