作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,首先,在你们中的一些人可能会把这个问题变成一个重复的问题之前。我已经经历了许多与我的问题相关的问题。但这些问题似乎无法解决我的问题。我想查找 2 个日期之间的天数,不包括周末和节假日。我所经历的问题声明了 $holiday
的变量在数组中并初始化该数组中的值。
下面是我在 LeaveapplicationController.php
中的代码查找天数不包括周末
$date1 = $model->startDate;
$date2 = $model->endDate;
$date1 = strtotime($date1);
$date2 = strtotime($date2);
//Initialized public holiday
$holidays = array("2020-01-21", "2020-01-22", "2020-01-23");
$days = ($date2 - $date1)/86400 + 1;
$fullWeek = floor($days/7);
$remainDay = fmod($days,7);
$firstDay = date("N", $date1);
$lastDay = date("N", $date2);
if($firstDay <= $lastDay){
if($firstDay <= 6 && 6 <= $lastDay) $remainDay--;
if($firstDay <= 7 && 7 <= $lastDay) $remainDay--;
}
else
{
if($firstDay == 7){
$remainDay--;
if($lastDay == 6){
$remainDay--;
}
}
else{
$remainDay -= 2;
}
}
$workDay = $fullWeek * 5;
if($remainDay > 0)
{
$workDay += $remainDay;
}
foreach($holidays as $holiday){
$timeStamp = strtotime($holiday);
if($date1 <= $timeStamp && $timeStamp <= $date2 && date("N", $timeStamp) != 6 && date("N", $timeStamp) != 7)
$workDay--;
}
$model->no_of_days=$workDay;
$model->save();
$holiday=array()
来自另一个数据库表的数据。有没有最好的方法来做到这一点?
最佳答案
使用 DateTime
$start = new \DateTime($model->startDate); //2020-01-01
$end = new \DateTime($model->endDate); //2020-01-31
$endDate = $end->format('Y-m-d');
$interval = new \DateInterval('P1D');
$end->add($interval);
$period = new \DatePeriod($start, $interval, $end);
foreach ($period as $date) {
$allDates[] = [
'date' => $date->format('Y-m-d'),
'dayNo' => $date->format('N'),
];
}
//Initialized public holiday
$holidays = HolidayModelName::find()
->select('date')
->where(['between', 'date', $start->format('Y-m-d'), $endDate])
->indexBy('date')
->column();
$workDay = 0;
foreach ($allDates as $value) {
$isWeekOff = $value['dayNo'] == 6 || $value['dayNo'] == 7;
if (!$isWeekOff && !isset($holidays[$value['date']])) {
$workDay++;
}
}
// Result : 20 Work Days
关于php - yii2 如何计算日期之间的天数,不包括周末和节假日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59657645/
我阅读了一些与C#函数相关的问题/答案来计算工作日(从周一到周五的日子);有些使用扩展代码来实现这一点。 我有一个超过 50,000 行的数据表,我需要一种有效的方法来计算这些信息。 最佳答案 根据@
有没有人想出如何配置 datepicker 以不显示特定日期(例如,7 月 4 日)?似乎这可以使用 beforeShowDay 来完成,但我并不肯定。 最佳答案 http://jsfiddle.ne
我是一名优秀的程序员,十分优秀!