986 |
// Condition retournée |
// Condition retournée |
987 |
return $whereContraintes; |
return $whereContraintes; |
988 |
} |
} |
989 |
|
|
990 |
|
/** |
991 |
|
* Calcule une date par l'ajout ou la soustraction de mois |
992 |
|
* @param date $date Date de base |
993 |
|
* @param integer $delay Délais à ajouter (en mois) |
994 |
|
* @param string $operator Opérateur pour le calcul ("-" ou "+") |
995 |
|
* |
996 |
|
* @return date Date calculée |
997 |
|
*/ |
998 |
|
function mois_date($date, $delay, $operator = "+") { |
999 |
|
|
1000 |
|
// Découpage de la date |
1001 |
|
$temp = explode("-", $date); |
1002 |
|
$day = (int) $temp[2]; |
1003 |
|
$month = (int) $temp[1]; |
1004 |
|
$year = (int) $temp[0]; |
1005 |
|
|
1006 |
|
// Si c'est une addition |
1007 |
|
if ($operator == '+') { |
1008 |
|
// Année à ajouter |
1009 |
|
$year += floor($delay / 12); |
1010 |
|
// Mois restant |
1011 |
|
$nb_month = ($delay % 12); |
1012 |
|
// S'il y a des mois restant |
1013 |
|
if ($nb_month != 0) { |
1014 |
|
// Ajout des mois restant |
1015 |
|
$month += $nb_month; |
1016 |
|
// Si ça dépasse le mois 12 (décembre) |
1017 |
|
if ($month > 12) { |
1018 |
|
// Soustrait 12 au mois |
1019 |
|
$month -= 12; |
1020 |
|
// Ajoute 1 à l'année |
1021 |
|
$year += 1; |
1022 |
|
} |
1023 |
|
} |
1024 |
|
} |
1025 |
|
|
1026 |
|
// Si c'est une soustraction |
1027 |
|
if ($operator == "-") { |
1028 |
|
// Année à soustraire |
1029 |
|
$year -= floor($delay / 12); |
1030 |
|
// Mois restant |
1031 |
|
$nb_month = ($delay % 12); |
1032 |
|
// S'il y a des mois restant |
1033 |
|
if ($nb_month != 0) { |
1034 |
|
// Soustrait le délais |
1035 |
|
$month -= $nb_month; |
1036 |
|
// Si ça dépasse le mois 1 (janvier) |
1037 |
|
if ($month < 1) { |
1038 |
|
// Soustrait 12 au mois |
1039 |
|
$month += 12; |
1040 |
|
// Ajoute 1 à l'année |
1041 |
|
$year -= 1; |
1042 |
|
} |
1043 |
|
} |
1044 |
|
} |
1045 |
|
|
1046 |
|
// Calcul du nombre de jours dans le mois sélectionné |
1047 |
|
switch($month) { |
1048 |
|
// Mois de février |
1049 |
|
case "2": |
1050 |
|
if ($year % 4 == 0 && $year % 100 != 0 || $year % 400 == 0) { |
1051 |
|
$day_max = 29; |
1052 |
|
} else { |
1053 |
|
$day_max = 28; |
1054 |
|
} |
1055 |
|
break; |
1056 |
|
// Mois d'avril, juin, septembre et novembre |
1057 |
|
case "4": |
1058 |
|
case "6": |
1059 |
|
case "9": |
1060 |
|
case "11": |
1061 |
|
$day_max = 30; |
1062 |
|
break; |
1063 |
|
// Mois de janvier, mars, mai, juillet, août, octobre et décembre |
1064 |
|
default: |
1065 |
|
$day_max = 31; |
1066 |
|
} |
1067 |
|
|
1068 |
|
// Si le jour est supérieur au jour maximum du mois |
1069 |
|
if ($day > $day_max) { |
1070 |
|
// Le jour devient le jour maximum |
1071 |
|
$day = $day_max; |
1072 |
|
} |
1073 |
|
|
1074 |
|
// Compléte le mois et le jour par un 0 à gauche si c'est un chiffre |
1075 |
|
$month = str_pad($month, 2, "0", STR_PAD_LEFT); |
1076 |
|
$day = str_pad($day, 2, "0", STR_PAD_LEFT); |
1077 |
|
|
1078 |
|
// Retourne la date calculée |
1079 |
|
return $year."-".$month."-".$day ; |
1080 |
|
} |
1081 |
} |
} |
1082 |
|
|
1083 |
?> |
?> |