![](/img/trans.png)
[英]How to count days of year PHP to create day range array wrapping past day 365 to day 1
[英]count how many day fall into specific date a range of year
最初,我试图创建一个函数来显示特定日期落入特定日期的次数。 例如,星期六落入某年的1月1日到某年的次数。
<?php
$firstDate = '01/01/2000';
$endDate = '01/01/2012';
$newYearDate= '01/01';
# convert above string to time
$time1 = strtotime($firstDate);
$time2 = strtotime($endDate);
$newYearTime = strtotime($newYearDate);
for($i=$time1; $i<=$time2; $i++){
$saturday = 0;
$chk = date('D', $newYearTime); #date conversion
if($chk == 'Sat' && $chk == $newYearTime){
$saturday++;
}
}
echo $saturday;
?>
例如,您每年只能有一个星期六进入1月1日,因此:
$firstDate = '01/01/2000';
$endDate = '01/01/2012';
$time1 = strtotime($firstDate);
$time2 = strtotime($endDate);
$saturday = 0;
while ($time1 < $time2) {
$time1 = strtotime(date("Y-m-d", $time1) . " +1 year");
$chk = date('D', $time1);
if ($chk == 'Sat') {
$saturday++;
}
}
echo "Saturdays at 01/01/yyyy: " . $saturday . "\n";
我更改的行是:
$time1 = strtotime(date("Y-m-d", strtotime($time1)) . " +1 year");
至
$time1 = strtotime(date("Y-m-d", $time1) . " +1 year");
因为$time1
已经从纪元开始以秒为单位-日期所需的格式。
自1970年1月1日以来, strtotime
为您提供秒数 。 由于您仅对几天感兴趣,因此您可以将循环每天增加86400秒,以加快计算速度
for($i = $time1; $i <= $time2; $i += 86400) {
...
}
有几点
$saturday
移出循环 $i
而不是$newYearTime
这应该工作
$firstDate = '01/01/2000';
$endDate = '01/01/2012';
# convert above string to time
$time1 = strtotime($firstDate);
$time2 = strtotime($endDate);
$saturday = 0;
for($i=$time1; $i<=$time2; $i += 86400){
$weekday = date('D', $i);
$dayofyear = date('z', $i);
if($weekday == 'Sat' && $dayofyear == 0){
$saturday++;
}
}
echo "$saturday\n";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.