【发布时间】:2019-01-04 09:45:17
【问题描述】:
我有一个 FromDate 和 ToDate 以及它们之间的天数。 现在我想获取除周末以外的所有日期
如果我的 FromDate 和 ToDate 之间有任何周末,那么这个日期将在周六和周日增加 2 天。
在下面的示例中,我计算了 2018 年 7 月 27 日和 2018 年 8 月 27 日之间的所有日期,它们之间的间隔为 5 天,
public function testdate(){
$date_from = new \DateTime("7/27/2018");
$date_to = new \DateTime("8/27/2018");
$interval = new \DateInterval("P5D");
$dates = new \DatePeriod($date_from, $interval, $date_to);
$out = array();
if (!empty($dates)) {
foreach($dates as $dt) {
$out[] = array(
'month_year' => $dt->format('d/m/Y')
);
}
}
'<pre>';
//$out = array_reverse($out);
echo print_r($out);
'</pre>';
exit;
}
预期输出
Array
(
[0] => Array
(
[month_year] => 27/07/2018
)
[1] => Array
(
[month_year] => 02/08/2018
)
[2] => Array
(
[month_year] => 08/08/2018
)
[3] => Array
(
[month_year] => 14/08/2018
)
[4] => Array
(
[month_year] => 20/08/2018
)
[5] => Array
(
[month_year] => 27/08/2018
)
)
在上面的示例中,在 20/08/2018 之后,下一个日期将是 26/08/2018 但 26/08/2018 是星期日,因此我们将这个星期日排除 1 天,下一个日期是现在 2018 年 8 月 27 日。
如果在计算周六和周日之间的间隔后出现任何日期,则将本周末跳过 1 或 2 天。
【问题讨论】:
-
为什么要标记
cakephp?一种解决方案可能是计算开始和结束之间的所有日期,然后测试日期是星期日还是星期六,并在这种情况下将其删除 -
因为我正在使用 cakephp 3.x...是的,你对 bt 如何做到这一点..我不知道..
-
我更新了我的代码..我尝试了什么
标签: php arrays date datetime dateinterval