THANASOFT-DV/gestion/lib/Helpers/DateHelpers.php
2025-01-27 14:12:44 +03:00

84 lines
2.6 KiB
PHP

<?php
namespace OCA\Gestion\Helpers;
use DateTime;
use DateTimeZone;
use Exception;
use IntlDateFormatter;
class DateHelpers
{
public static function isWeekend(string $dateString): bool
{
try {
$date = new DateTime($dateString);
$dayOfWeek = $date->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 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 getDaysCountInAMonthAndYear($month,$year){
return $month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29 : ($year % 400 ? 28 : 29))) : (($month - 1) % 7 % 2 ? 30 : 31);
}
}