在PHP中是否有任何方法我们可以计算两组日期之间的星期五(或指定的任何其他日期)的数量? 我正在通过像this这样的sql来实现它现在我想直接在php中实现,我已经用谷歌搜索了,并且发现其他所有其他日期和星期都没有,但不是一周的日子。
答案 0 :(得分:4)
您可以获取特定日期的计数,日期范围之间的,而不会在所有日期循环。
我修改了this function。
使用:强>
echo dayCount('2013-11-15', '2013-11-22', 5); # 2x Friday
echo dayCount('2013-11-15', '2013-11-22', 1); # 1x Monday
<强>功能:强>
function dayCount($from, $to, $day = 5) {
$from = new DateTime($from);
$to = new DateTime($to);
$wF = $from->format('w');
$wT = $to->format('w');
if ($wF < $wT) $isExtraDay = $day >= $wF && $day <= $wT;
else if ($wF == $wT) $isExtraDay = $wF == $day;
else $isExtraDay = $day >= $wF || $day <= $wT;
return floor($from->diff($to)->days / 7) + $isExtraDay;
}
<强> Demo 强>
答案 1 :(得分:1)
首先,你可以获得当天的星期四(例子)。
$registered = strtotime(date('d/m/Y'));
$lastday = strtotime(date('t/m/Y'));
$curMonth = date("m");
for ($i=1; $i < 15; $i++){
$week = $i*7;
if (date("m",strtotime("next thursday - 42 days + $week days")) == $curMonth){
$monthArr[] = date("d",strtotime("next thursday - 42 days + $week days"));
}
}
然后你会发现从当前日期到月末日的星期四。
foreach($monthArr as $moAr) {
if(date("d") <= $moAr) {
$get[] = $moAr;
}
}
答案 2 :(得分:0)
尝试使用给定的代码:
<?php
$no = 0;
$start = new DateTime('2013-11-11');
$end = new DateTime('2013-11-23');
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $dt)
{
if ($dt->format('N') == 5)
{
$no++;
}
}
echo $no;
其中$dt->format('N') == 5
中的5表示本周的第5天,即星期五。
答案 3 :(得分:0)
您可以使用递归创建函数。
function dayCount($day, $startDate, $endDate, $counter){
if($startDate >= $endDate){
return $counter;
}else{
return dayCount($day, strtotime("next ".$day, $startDate), $endDate, ++$counter);
}
}
echo dayCount("Friday", strtotime("2019-03-01"), strtotime("2019-03-31"), 0); exit();
输出为5