format('N'); return in_array($dayOfWeek, [6, 7]); } catch (Exception $e) { // Handle invalid date strings return false; } } public static function GetMonthPlainString($month){ $formatter = new IntlDateFormatter( 'fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::NONE, null, null, 'MMMM' ); $date = DateTime::createFromFormat('!m', $month); $monthString = strtoupper($formatter->format($date)); $normalizedMonth = mb_convert_case($monthString, MB_CASE_UPPER, "UTF-8"); return $normalizedMonth; } public static function GetDateWithFormatDayAndMonthPlainString(string $date){ $dateTime = new DateTime($date); $formattedDate = $dateTime->format('d F'); $formattedDate = str_replace( array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'), array('JANVIER', 'FEVRIER', 'MARS', 'AVRIL', 'MAI', 'JUIN', 'JUILLET', 'AOUT', 'SEPTEMBRE', 'OCTOBRE', 'NOVEMBRE', 'DECEMBRE'), $formattedDate ); return $formattedDate; } public static function GetFullFactureOrDevisNumberByDate($date,$devisNumber,$prefix){ $year = $date->format('y'); $month = $date->format('m'); $devisNumber = str_pad($devisNumber, 2, '0', STR_PAD_LEFT); $devisNumber = $prefix . $year . $month . $devisNumber; return $devisNumber; } public static function GetLastDayOfTheMonthOfADate($datetime){ $datetime->modify('last day of this month'); $lastDay = $datetime; return $lastDay; } public static function getDaysCountInAMonthAndYear($month,$year){ return $month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29 : ($year % 400 ? 28 : 29))) : (($month - 1) % 7 % 2 ? 30 : 31); } public static function getDatesOfMonth($year, $month) { $dates = []; $daysInMonth = self::getDaysCountInAMonthAndYear($month, $year); for ($day = 1; $day <= $daysInMonth; $day++) { $dateString = sprintf("%04d-%02d-%02d", $year, $month, $day); $dates[] = new DateTime($dateString); } return $dates; } public static function isPublicHoliday(string $dateString): bool { try { $date = new DateTime($dateString); $dayOfWeek = $date->format('N'); return $dayOfWeek == 7; } catch (Exception $e) { return false; } } public static function getPublicHolidayText($isPublicHoliday){ return $isPublicHoliday ? "Ferie" : "J"; } public static function getHoursBetweenTwoDatetime($datetimeEnd,$datetimeStart){ if($datetimeEnd == null || $datetimeStart == null){ return 0; } $interval = $datetimeStart->diff($datetimeEnd); $hours = $interval->h + ($interval->days * 24) + ($interval->i / 60); return $hours; } public static function GetWorkingHoursBetweenDatetimeEndAndDatetimeStart(Datetime|null $datetimeEnd,Datetime|null $datetimeStart){ if($datetimeEnd == null || $datetimeStart == null){ return 0; } $workingStartAM = new DateTime($datetimeStart->format('Y-m-d') . ' 08:00',$datetimeStart->getTimezone()); $workingEndAM = new DateTime($datetimeStart->format('Y-m-d') . ' 12:00',$datetimeStart->getTimezone()); $workingStartPM = new DateTime($datetimeStart->format('Y-m-d') . ' 13:00',$datetimeStart->getTimezone()); $workingEndPM = new DateTime($datetimeStart->format('Y-m-d') . ' 17:00',$datetimeStart->getTimezone()); $totalHours = 0; if ($datetimeStart->format('N') < 7) { $dayStartAM = max($datetimeStart, $workingStartAM); $dayEndAM = min($datetimeEnd, $workingEndAM); if ($dayStartAM < $dayEndAM) { $totalHours += ($dayEndAM->getTimestamp() - $dayStartAM->getTimestamp()) / 3600; } $dayStartPM = max($datetimeStart, $workingStartPM); $dayEndPM = min($datetimeEnd, $workingEndPM); if ($dayStartPM < $dayEndPM) { $totalHours += ($dayEndPM->getTimestamp() - $dayStartPM->getTimestamp()) / 3600; } } else{ $totalHours = ($datetimeEnd->getTimestamp() - $datetimeStart->getTimestamp()) / 3600; } return $totalHours; } }