我希望找到哪个星期的星期五开始的一个月的日期。例如,日历看起来像这样:
Week count F Sa Su M Tu W Th
----------------------------------------
0 1 2 3 4 5 6
1 7 8 9 10 11 12 13
2 14 15 16 17 18 19 20
3 ...
输入将是时间戳格式的日期($currentDate
),我正在寻找$weekCount
形式的输出。
由于
答案 0 :(得分:1)
只需要一次回到7天,直到你发现你已经覆盖了所有这些,就需要计算前一个星期五的数量。
循环将始终超过周五,以涵盖星期五不是本月第一天的正常情况。如果星期五是该月的第一天,那么您需要减少增量以解决过冲。
$currentDate = time(); // e.g.
$dayOfMonth = date('j', $currentDate);
$ym = date('Y-m', $currentDate);
$firstFriday = strtotime("Friday ".$ym);
$dateOfFirstFriday = date('j', $firstFriday);
// we need to reduce count by 1 if friday is the 1st, to compensate
// for overshooting by a week due to the >= in the while loop
$weekCount = ($dateOfFirstFriday == 1) ? -1 : 0;
while ($dayOfMonth >= $dateOfFirstFriday) {
$weekCount ++;
$dayOfMonth = $dayOfMonth - 7;
}
var_dump($weekCount);
如果我们说的是第30个星期五,那么这个代码没有说明,那么实际上我们是在下个月的第0周吗?如果需要的话,从开场白不清楚。