插件窝 干货文章 php 请假计算方法

php 请假计算方法

timestamp 请假 天数 start 970    来源:    2025-03-19

在PHP中实现请假计算方法通常涉及以下几个步骤:

  1. 获取请假开始时间和结束时间:用户输入或从数据库中获取请假的开始时间和结束时间。

  2. 计算请假天数:根据开始时间和结束时间计算请假的天数。

  3. 考虑工作日和节假日:如果需要排除周末和节假日,还需要进一步处理。

下面是一个简单的PHP代码示例,展示如何计算请假天数:

<?php
// 假设用户输入的请假开始时间和结束时间
$start_date = '2023-10-01';
$end_date = '2023-10-05';

// 将日期转换为时间戳
$start_timestamp = strtotime($start_date);
$end_timestamp = strtotime($end_date);

// 计算总天数
$total_days = ($end_timestamp - $start_timestamp) / (60 * 60 * 24) + 1;

echo "总请假天数: " . $total_days . " 天\n";

// 如果需要排除周末
function calculate_working_days($start_date, $end_date) {
    $start_timestamp = strtotime($start_date);
    $end_timestamp = strtotime($end_date);
    $working_days = 0;

    while ($start_timestamp <= $end_timestamp) {
        $day_of_week = date('N', $start_timestamp);
        if ($day_of_week < 6) { // 1-5 表示周一到周五
            $working_days++;
        }
        $start_timestamp = strtotime('+1 day', $start_timestamp);
    }

    return $working_days;
}

$working_days = calculate_working_days($start_date, $end_date);
echo "工作日请假天数: " . $working_days . " 天\n";

// 如果需要排除节假日
$holidays = [
    '2023-10-02', // 假设10月2日是节假日
];

function calculate_working_days_with_holidays($start_date, $end_date, $holidays) {
    $start_timestamp = strtotime($start_date);
    $end_timestamp = strtotime($end_date);
    $working_days = 0;

    while ($start_timestamp <= $end_timestamp) {
        $day_of_week = date('N', $start_timestamp);
        $current_date = date('Y-m-d', $start_timestamp);
        if ($day_of_week < 6 && !in_array($current_date, $holidays)) {
            $working_days++;
        }
        $start_timestamp = strtotime('+1 day', $start_timestamp);
    }

    return $working_days;
}

$working_days_with_holidays = calculate_working_days_with_holidays($start_date, $end_date, $holidays);
echo "排除节假日后的工作日请假天数: " . $working_days_with_holidays . " 天\n";
?>

代码说明:

  1. 总请假天数:直接计算从开始日期到结束日期的总天数。
  2. 工作日请假天数:排除周末(周六和周日)的请假天数。
  3. 排除节假日后的工作日请假天数:进一步排除指定的节假日。

注意事项:

  • 节假日的处理需要根据实际情况定义节假日数组。
  • 如果请假时间跨越多个月或年份,需要确保日期格式和计算逻辑的正确性。

通过这种方式,你可以灵活地计算请假天数,并根据需要排除周末和节假日。