1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| <!-- source internet -->
<!-- le 01/01/1900 soit Lundi 1 Janvier 1900 -->
<!-- le 01/01/2050 soit Samedi 1 Janvier 2050 -->
<!-- d'années bissextiles depuis 1900 jusqu'à 2050 -->
<!-- 1904, 1908, .. ==> .., 2044, 2048 (par intervalle de 4 ans) -->
<!--Il y a un 29 février tous les 4 ans, et ce depuis 1582 et l'introduction du calendrier grégorien,
on arrive au décompte de 106 « 29 février ».
Cent six et non 109 car les années 1700, 1800 et 1900 n'ont pas été bissextiles
(les années en ×000 ne sont bissextiles que si elles sont multiples de 400, comme l'an 2000)
Depuis l'ajustement du calendrier grégorien (1582),
l'année n'est bissextile (comportant 366 jours) que dans l'un des deux cas suivants:
si l'année est divisible par 4 et non divisible par 100,
si l'année est divisible par 400
(« divisible » signifie que la division donne un nombre entier, sans reste).
-->
<?php
//timestamp unix, impossible d'utiliser des dates précédant le 1er janvier 1970
//***************************************************************************************************************************
function DateLiteral($DateSoumise){
$NomJours = array(0 => "dimanche",1 => "lundi",2 => "mardi",3 => "mercredi",4 => "jeudi",5 => "vendredi",6 => "samedi");
$NomMois = array(1 => "janvier",2 => "février",3 => "mars",4 => "avril",5 => "mai",6 => "juin",
7 => "juillet",8 => "aout",9 => "septembre",10 => "octobre",11 => "novembre",12 => "decembre");
list($JourNbr, $Mois, $Annee) = explode('/', $DateSoumise);
$JourNbr = intval($JourNbr); // convertir un chiffre < 10 (09 ==> 9)
$Mois = intval($Mois); // (03 ==> 3)
echo '<br>$JourNbr = '.$JourNbr.',$Mois = '.$Mois.',$Annee = '.$Annee;
$NbrJours = 0;
// ajout des jours pour les années entieres soumises (donc année soumise - 1)
for ($i = 1900; $i < $Annee; $i++) {
$NbrJours += ($i % 4 == 0 && $i % 100 <> 0) ? 366 : 365; // si la condition est vraie, année bissextile 366 jours, sinon 365
}
// ajout des jours pour les mois entier (donc mois soumis - 1)
echo '<br>$NbrJours année(s) pleinne(s) = '.$NbrJours;
for ($i = 1; $i < $Mois; $i++) {
switch ($i)
{
case 2: // mois de février
$NbrJours += ($Annee % 4 == 0 && $Annee % 100 <> 0 && ($Mois-1) >= 3) ? 29 : 28; // si la condition est vraie, année bissextile
break;
case 1: //janvier
case 3: //mars
case 5: //mai
case 7: //juillet
case 8: //aout
case 10://octobre et ligne suivante decembre
case 12: $NbrJours += 31;break;
default: $NbrJours += 30;break; //tous les autres mois
}
}
echo '<br>$NbrJours année(s) pleinne(s) et mois plein(s) = '.$NbrJours;
$NbrJours += $JourNbr; // ajout du nombre de jour du mois non entier de la date soumise
echo '<br>$NbrJours + $JourNbr, total jours: '.$NbrJours;
if ($JourNbr>=1 && $Mois>=3 && $Annee>=2000){$NbrJours += 1;}//01/03/2000 // <************ POURQUOI ********** ????
$NbrSemaineInt = intdiv($NbrJours, 7);//Nombre de semaines entieres
echo '<br>$NbrSemaineInt = ' . $NbrSemaineInt;
$RestNbrj = $NbrJours - ($NbrSemaineInt * 7);//Nombre de jour en semaine non entiere
echo '<br>$RestNbrj = ' . $RestNbrj . '<br><br>';
return $NomJours[$RestNbrj] . " " . $JourNbr . " " . $NomMois[$Mois] . " " . $Annee;
}//*********************************************************************************************************
if (isset($_POST['SoumissionDate']))
{
$LaDate = $_POST['datesoumise'];
echo 'Pour la date du ' . $LaDate;
echo '<br />';
echo 'la date littérale est: ' . DateLiteral($LaDate);
}
?> |
Partager