How can PHP functions like mktime() be utilized effectively to calculate time differences and handle scenarios where work hours extend beyond regular business hours?

To calculate time differences and handle scenarios where work hours extend beyond regular business hours using PHP functions like mktime(), you can determine the start and end times, calculate the total time difference, and then adjust for non-working hours by excluding weekends and after-hours time.

$start_time = mktime(9, 0, 0, 9, 15, 2022); // Start time: 9:00 AM on September 15, 2022
$end_time = mktime(18, 30, 0, 9, 15, 2022); // End time: 6:30 PM on September 15, 2022

$diff_seconds = $end_time - $start_time; // Calculate total time difference in seconds

// Adjust for non-working hours (after 6:00 PM or weekends)
$after_hours_start = mktime(18, 0, 0); // 6:00 PM
$after_hours_end = mktime(23, 59, 59); // 11:59 PM
$weekend_start = mktime(0, 0, 0, 9, 17, 2022); // Start of weekend (Saturday)
$weekend_end = mktime(23, 59, 59, 9, 18, 2022); // End of weekend (Sunday)

if ($end_time > $after_hours_start && $start_time < $after_hours_end) {
    $diff_seconds -= min($end_time, $after_hours_end) - max($start_time, $after_hours_start);
}

if ($end_time > $weekend_start && $start_time < $weekend_end) {
    $diff_seconds -= min($end_time, $weekend_end) - max($start_time, $weekend_start);
}

$diff_hours = $diff_seconds / 3600; // Convert total time difference to hours
echo "Total work hours: " . $diff_hours;